我有一个数组散列,如图所示:
my %hash = (
234 => ["aa", "bb", "aa", "ab", "aa"],
235 => ["aa", "ab", "aa", "bb", "aa"],
236 => ["bb", "aa", "aa", "aa", "bb"],
...
)
我正在尝试遍历每个值的第一个元素并计算 bb
的出现次数。
例如,在上面的散列中,对于显示的所有第一个元素,我都出现了一次 bb
。我需要将该数字(所有数组的第 0 个元素中“bb”的数量)插入一个新数组,然后移动到下一组元素。
对于上面的示例,我将遍历数组的所有 4 个元素并使用 (1, 1, 0, 1, 1)
获得最终数组。
我在正确编写代码时遇到了很多麻烦,而且还没有找到类似的问题。任何帮助将非常感激。
最佳答案
一个简单的解决方案:遍历哈希值。对于每个值,迭代数组的成员并在需要时将 1 添加到结果数组:
#!/usr/bin/perl
use warnings;
use strict;
my %hash = (234 => [qw/aa bb aa ab aa/],
235 => [qw/aa ab aa bb aa/],
236 => [qw/bb aa aa aa bb/],
);
my @result;
for my $value (values %hash) {
my $i = 0;
for (@$value) {
$result[$i++] += 'bb' eq $_;
}
}
print "@result\n";
关于arrays - Perl循环遍历单个元素的数组哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705547/