加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在perl中散列的数组

发布时间:2020-12-16 06:12:29 所属栏目:大数据 来源:网络整理
导读:我有一个源列表,我从中获取随机项并填充目标列表.列表中的项目具有特定格式.例如: item1{'name'}item1{'date'} 等等以及更多领域. 插入目的地列表时,我检查项目上的唯一名称,并将其插入该列表.为此,我必须遍历整个目标列表以检查具有给定名称的项是否存在,
我有一个源列表,我从中获取随机项并填充目标列表.列表中的项目具有特定格式.例如:

item1{'name'}
item1{'date'}

等等以及更多领域.

插入目的地列表时,我检查项目上的唯一名称,并将其插入该列表.为此,我必须遍历整个目标列表以检查具有给定名称的项是否存在,如果不存在则插入它.

我认为如果我将目标列表再次作为哈希而不是列表,这样会更好,这样我就可以更快更有效地查找项目.我是Perl的新手,我没有得到如何做到这一点.任何人,请帮助我如何插入项目,找到特定的项目名称,并删除哈希项目?

如何将名称和日期作为键,将整个项目作为值?

解决方法

我的%哈希;

>使用密钥$K插入$V项?

$hash {$K} = $V.
>查找特定名称/密钥$K?

    if (exists $hash{$K}) { 
        print "it is in there with value '$hash{$K}'n";
    } else { 
        print "it is NOT in theren" 
    }

>删除特定的名称/密钥?

删除$hash {$K}
>将名称和日期作为键,将整个项目作为值?

简单方法:将所有内容串在一起

set: $hash{ "$name:$date" } = "$name:$date:$field1:$field2"
get: my ($name2,$date2,$field1,$field2) = split ':',$hash{ "$name:$date" }
del: delete $hash{ "$name:$date" }

更难的方式:在哈希中存储哈希(谷歌“perl对象”)

组:

my %temp;
$temp{"name"} = $name;
$temp{"date"} = $date;
$temp{"field1"} = $field1;
$temp{"field2"} = $field2

$hash{"$name:$date"} = $temp;

得到:

my $find = exists $hash{"$name:$date"} ? $hash{"$name:$date"} : undef;
if (defined find) { # i.e. it was found
    printf "field 1 is %sn",$find->{"field1"}
} else {
    print "Not foundn";
}

删除:

delete $hash{"$name:$date"}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读