perl的hash:一个键对应多个值的代码

这篇博客介绍了如何使用Perl处理包含重复键的文本文件,通过哈希表将相同键的值聚合在一起。代码示例展示了如何读取txt文件,将每个键的值存储为数组引用,并将所有值推入相应数组。最后,遍历哈希并打印每个键及其对应的值列表。这个脚本适用于需要对多值键进行分类和整理的场景,例如将城市按国家分组。
摘要由CSDN通过智能技术生成

perl哈希表,一个键对应多个值的情况如何写代码

目前有好几个txt文件,每个文件都是key=>value
但是文件中的key有大量的重复 所以想把单个key中所有的value都给列到一起,然后打到一个文件中 方便查找。

读的时候把key当hash的键,对应的值是一个数组引用,直接把相应的值push进去。

代码片断:

my %hash;
while (<>) {
    chomp;
    my ($key, $value) = split("=>");
    push @{$hash{$key}}, $value;
}

for my $key (keys %hash) {
    print "$key => ";
    my $value_arr = $hash{$key};
    print join(", ", @$value_arr), "\n";
}

参考:http://blog.sina.com.cn/s/blog_65ba09d90101gn3z.html

案例:
test.txt文件是城市对应的国家,将城市进行分类,对应到相应的国家。以国家作为key,城市名对应value。

cat test.txt
Chicago, USA
Frankfurt, Germany
Berlin, Germany
Washington, USA
Helsinki, Finland
New York, USA
perl脚本

用到hash引用:将一个数组作为hash的值。

#!/usr/bin/perl -w
use strict;
use Data::Dumper;

my %hash=();
open IN,"<test.txt";
while (<IN>) {
    chomp;
    my ($city, $country) = split /, /,$_;
    $hash{$country} = [] unless exists $hash{$country};
    push @{$hash{$country}}, $city;  #将城市放入对应国家的数组中。
}
close IN;

print Dumper (\%hash);
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值