数组作为hash元素的时候如何push

#######################################################################
#   Copyright (C) 2015 All rights reserved.
#
#   文件名称:p.pl
#   创 建 者:
#   创建日期:2015年05月11日
#   描    述:
#
#   备    注:
#
#########################################################################

use strict;
use warnings;
use Time::HiRes;
# please add your code here!
my $tmStarted=Time::HiRes::time;
if (2 != scalar @ARGV)
{
    &PrintUsage();
    exit 1;
}
=pod
    Subroutine(s);
=cut
sub PrintUsage
{
    print STDERR "perl program.pl [IN] ref_file [IN] input_file [OUT] output_file\n";
}
my $line = "";
my $linecount = 0;
my %hash = ();
open FIN, "<$ARGV[0]" or die "can not open inputfile:$!\n";
open FOUT, ">$ARGV[1]" or die "can not create outputfile :$!\n";
while(defined($line=<FIN>))
{
    chomp $line;
    my @vec = split /\t/, $line;
    my $size = scalar @vec;
    if ($size < 3)
    {
        print STDERR "$line\n";
    }
    if (not defined($hash{$vec[0]}))
    {
        my @vectemp = ();
        push @vectemp, $vec[2];
        $hash{$vec[0]} = \@vectemp;
    }
    else
    {
        push @{$hash{$vec[0]}}, $vec[2];
    }

}
close FIN;
foreach my $key (keys%hash)
{
    my @vec2 = @{$hash{$key}};
    my $size = scalar @vec2;
    my $part = "";
    for (my $i = 0; $i <$size; $i++)
    {
        $part.=$vec2[$i];
        if ($i < $size - 1)
        {
            $part.=",";
        }
    }
    print FOUT "$key\t$part\n";
}
close FOUT;
print STDERR "$0 has finished,congratulations!\n";
print STDERR "Time elapsed:".(Time::HiRes::time-$tmStarted)."\n";
时间: 2024-08-10 15:12:09

数组作为hash元素的时候如何push的相关文章

数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法

push用法 push 英 [p??] 美 [p??] vt. 推,推动; vt. 按; 推动,增加; 对-施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newelement2,....,newelementX) 返回值 把指定的值添加到数组后的新长度.( 使用  document.write(arrayObject.push(

几种去除数组中重复元素的方法

工作中遇到的一个问题,就是去除数组中重复的元素,记录一下几种有效的方法: 第一种思路:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>去除数组重复项</title> </head> &

Js中去除数组中重复元素的几种方法

方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(arr.indexOf(this[i]) == -1){ 5 arr.push(this[i]); 6 } 7 } 8 return arr; 9 } 方法2: 1 Array.prototype.method2 = function(){ 2 var h{}; //定义一个hash表 3 var arr[

移除数组中的元素

题目分析:移除数组中的元素可以分为两种情况, 1,不对原数组进行操作: 不对原数组进行操作的,可以新建一个数组,利用数组的栈方法 push,循环数组中的元素,把不等于特定元素的加入新数组. function remove(arr, item) {var res=[];for(var i=0;i<arr.length;i++){if(arr[i]==item){continue}else{res.push(arr[i]);}}return res; } 2,对原数组进行操作:可以利用数组的操作方法

JavaScript 的in 操作符 (“如何判断某值是否数组中的元素”?)

在编写JavaScript时,遇到一个常见的问题"如何判断某值是否数组中的元素"?这让我想起了PHP中的in_array()函数和Python中in 操作符.但JavaScript似乎没有内置类似的函数,而其in 操作符的作用也有点不同.通过查询相关的资料,我发现JavaScript的in 操作符还是挺有用的. 一.问题让我想到in 操作符,正是因为这样一个问题:"如何判断某值是否数组中的元素"?在PHP中,您可能会这样来处理: $os = array("

08.18 javascript 06 数组 数组的概念 创建数组 读取数组中的元素 稀疏数组 添加和删除数组的元素 数组遍历 多维数组 数组的方法 类数组对象 作为数组的字符串

# 数组 ### 数组的概念 * 数组是值的有序集合 * 数组中的每个值 称之为 元素 * 每个元素可以是任意数据类型的值 * 每个元素都有索引(下标) * 元素的索引从0开始,按照顺序递增. 元素最大的索引 2^32-2 ### 创建数组 * 直接量 `[]` * 构造函方式  `new Array()` ### 读写数组中的元素 * 数组名[索引] ### 稀疏数组 * js数组的索引是连续的 * 没有连续的给元素赋值 , 没有赋值的元素会自动赋值 undefined ### 添加和删除 数

删除数组中某元素,返回含有剩余元素的数组

arr为删除前的数组,key为要删除的元素对象.//删除数组中某元素,返回含有剩余元素的数组------------------------------------function arrMove(arr, key){ var temp = []; for (var i=0; i<arr.length; i++) { if (arr[i] != key) { temp.push(arr[i]); } } return temp;}

判断数组中不同元素出现次数

群里的提问,简单直接的流程式实现: var arr1=[1,1,1,1,1,2,2,2,2,3,3,3,4,4,5,6,7,7,'1','1']; var res = []; var btn; for(var i =0;i<arr1.length;i++){ btn = false; for(var j = 0;j<res.length;j++){ if(arr1[i] === res[j].val){ res[j].count += 1; btn = true; break; } } if(

qsort 函数的使用——对普通数组、指针数组、二维数组中的元素进行排序

在ANSI C中,qsort函数的原型是 #include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)); 解释:qsort函数对含有nmemb个元素的数组进行排序,而base指针指向数组的第一个元素.这个数组的元素个数由size指定. compar函数对qsort的比较操作进行定义,所以可以定制数字的比较,字符串的比较,甚至结构体