使用其值从perl哈希获取密钥名称

时间:2017-07-24 16:28:20

标签: perl

我有4个成员的哈希,比方说,

%hash = 
( 

xxx => 8,

yyy => 3,

zzz => 2,

aaa => 2,

)

但是,这里我们只知道“8,3,2,2”,即该哈希中的值,如何获取并存储特定值“3”的键名? (没有任何哈希反转,因为反转不会返回重复元素)

1 个答案:

答案 0 :(得分:3)

检查目标值的每个键值对

@target_keys = grep { $hash{$_} eq $target_value } keys %hash;

如果你要做很多事情,那么“反转”散列是有意义的,但是在反向散列中使用列表引用作为散列值,这样你就可以跟踪原始散列中的多个键何时引用相同的价值。

my %reverse_hash = ();
while (my ($k,$v) = each %hash) {
    push @{$reverse_hash}{$v}, $k;
}

...

@target_keys = @{$reverse_hash{$target_value} // []}