我需要根据哈希值打印密钥。这是我写的代码
foreach $value (values %hash)
{
print "$value\t$hash{$value}\n";
}
错误:我只能打印值,但不能打印键。
任何帮助将不胜感激。
谢谢
哈希被设计为通过键访问,而不是通过值访问。您需要遍历键列表,而不是值。
然后,您可以使用键来访问关联的值。
foreach my $key (keys %hash) {
my $value = $hash{$key};
say "$key = \t$value";
}
尝试:
for my $key (keys %hash) {
print "$key\t$hash{$key}\n";
}
print "$_\t$hash{$_}\n" for keys %hash;
单线:
map { print "$_\t$hash{$_}\n" } keys %hash;
如果您想遍历键和值,我可能会使用 while 和 each:
while (my ($key, $value) = each %hash) {
say "$key -> $value";
}
标题请求根据值打印键。
如果您在苛刻表中的键和值应该是一对一的
foreach $key (keys %hash)
{
$r_hash{$hash{$key}}=$key;
}
....
如果您想按值访问它,则将您的哈希定义为
$x = { 'x1' => [ 'one','x1']}
foreach ( values %$x )
{
foreach $m1 (@$_) {
print "$m1\n";
}
}
请注意,您可以通过 value 数组的第二个成员从 value 中获取键。