如何在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |