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

如何在perl哈希中查找和计算重复值

发布时间:2020-12-15 23:26:41 所属栏目:大数据 来源:网络整理
导读:我需要在perl哈希中找到重复值,然后在该计数为时输出键/值对和相关的重复计数. 1. (我可以留下我尝试过的代码样本,但这只会导致大规模的混乱和可能无法控制的笑声,我真的希望通过一些相似的自尊来实现它.) 哈希键/值如下所示: %hash = qw('FHDJ-124H' = 'ho
我需要在perl哈希中找到重复值,然后在该计数为>时输出键/值对和相关的重复计数. 1.

(我可以留下我尝试过的代码样本,但这只会导致大规模的混乱和可能无法控制的笑声,我真的希望通过一些相似的自尊来实现它.)

哈希键/值如下所示:

%hash = qw('FHDJ-124H' => 'hostname1','HJDHUR-87878' => 'hostname2','HGHDJH-874673' => 'hostname1');

我想要的输出是:

2 duplicates found for hostname1
    FHDJ-124H
    HGHDJH-874673

在Solaris上使用perl 5.6 10.不允许升级或加载perl mod的严格控制的生产环境. (转移到5.8的变更请求大约需要6个月).

非常感谢!

解决方法

您需要遍历第一个哈希(键/值)中的哈希键,并累积您在另一个哈希值(值/计数)中找到的每个项目的计数.

如果要将键与重复值一起显示,则第二个哈希不能那么简单,因为对于每个重复的值,您将拥有一组键(所有键都具有相同的值).在这种情况下,只需将键累积在一个数组中,然后计算其元素.即,你的第二个哈希就像(value / [key1,key2,key3 …])

my %hash = ( key1 => "one",key2 => "two",key3 => "one",key4 => "two",key5 => "one" );
my %counts = ();
foreach my $key (sort keys %hash) {
    my $value = $hash{$key}; 
    if (not exists $counts{$value}) {
        $counts{$value} = [];
    }
    push $counts{$value},$key;
};

然后迭代$count以输出$count中的元素数量{$value}> 1

(编辑:李大同)

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

    推荐文章
      热点阅读