3

我需要根据哈希值打印密钥。这是我写的代码

foreach $value (values %hash)
{
    print "$value\t$hash{$value}\n";
}

错误:我只能打印值,但不能打印键。

任何帮助将不胜感激。

谢谢

4

7 回答 7

8

哈希被设计为通过键访问,而不是通过值访问。您需要遍历键列表,而不是值。

然后,您可以使用键来访问关联的值。

foreach my $key (keys %hash) {
    my $value = $hash{$key};
    say "$key = \t$value";
}
于 2012-09-06T16:27:36.570 回答
4

尝试:

for my $key (keys %hash) {
    print "$key\t$hash{$key}\n";
}
于 2012-09-06T16:29:26.577 回答
4
print "$_\t$hash{$_}\n" for keys %hash;
于 2012-09-06T19:03:39.783 回答
1

单线:

map { print "$_\t$hash{$_}\n" } keys %hash;
于 2012-09-06T16:38:18.157 回答
1

如果您想遍历键和值,我可能会使用 while 和 each:

while (my ($key, $value) = each %hash) {
    say "$key -> $value";
}
于 2012-09-06T20:28:44.567 回答
1

标题请求根据值打印键。

如果您在苛刻表中的键和值应该是一对一的

foreach $key (keys %hash)
{
  $r_hash{$hash{$key}}=$key;
}
....
于 2019-08-20T04:37:04.590 回答
0

如果您想按值访问它,则将您的哈希定义为

$x = {  'x1' => [ 'one','x1']}   


foreach ( values %$x ) 
{                                                                                     
     foreach $m1 (@$_) { 
        print "$m1\n";
     }
}     

请注意,您可以通过 value 数组的第二个成员从 value 中获取键。

于 2012-09-06T22:02:55.910 回答