[英]Printing keys based on Hash values in Perl
我需要在散列中打印基於vales的鍵。 我寫道,這是代碼
foreach $value (values %hash)
{
print "$value\t$hash{$value}\n";
}
錯誤:我只能打印值,但不能打印鍵。
任何幫助將不勝感激。
謝謝
哈希設計為按鍵訪問,而不是按值訪問。 您需要遍歷鍵列表,而不是值。
然后,您可以使用鍵來訪問關聯的值。
foreach my $key (keys %hash) {
my $value = $hash{$key};
say "$key = \t$value";
}
print "$_\t$hash{$_}\n" for keys %hash;
試試:
for my $key (keys %hash) {
print "$key\t$hash{$key}\n";
}
一內膽:
map { print "$_\t$hash{$_}\n" } keys %hash;
如果你想迭代鍵和值,我可能會使用while和each:
while (my ($key, $value) = each %hash) {
say "$key -> $value";
}
如果要按值訪問它,請將哈希定義為
$x = { 'x1' => [ 'one','x1']}
foreach ( values %$x )
{
foreach $m1 (@$_) {
print "$m1\n";
}
}
請注意,您可以通過值數組的第二個成員從值獲取鍵。
標題請求根據值打印密鑰。
如果你的苛刻表中的鍵和值應該是一對一的
foreach $key (keys %hash)
{
$r_hash{$hash{$key}}=$key;
}
....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.