gpt4 book ai didi

perl - 如何查找和计算 Perl 哈希中的重复值

转载 作者:行者123 更新时间:2023-12-01 16:32:13 25 4
gpt4 key购买 nike

我需要在 Perl 哈希中查找重复值,然后在该计数 > 1 时输出键/值对和关联的重复计数。

(我可以留下我尝试过的代码示例,但这只会导致大量困惑,并可能导致无法控制的笑声,我真的希望能够带着某种自尊度过一生。)

哈希键/值如下所示:

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

我想要的输出是:

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

在 Solaris 10 上使用 perl 5.6。严格控制的生产环境,不允许升级或加载 perl mods。 (迁移到 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;
};

然后迭代$counts,当$counts{$value}中的元素数量> 1时输出你需要的内容

关于perl - 如何查找和计算 Perl 哈希中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com