arrays - Perl循环遍历单个元素的数组哈希

标签 arrays perl loops hash

我有一个数组散列,如图所示:

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/

相关文章:

javascript - 从 JavaScript 中的数组中提取最重复的值(使用 jQuery)

python - Python 中这两行 Perl 的等价物?

r - 累积和直到达到最大值,然后在下一行从零开始重复

JavaScript 循环显示相同值 10 次

Java 将 Int 数组转换为 SortedSet

arrays - .space 在 mips 中有什么作用?

php 变量到数组 - 与 "extract"相反

Perl:展平多维数组的最简单方法是什么?

Javascript:/e Javascript 中 RegExp 的修饰符

c - OpenMP 令人尴尬的并行循环,没有加速