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
print "$_\t$hash{$_}\n" for keys %hash;
于 2012-09-06T19:03:39.783 に答える
4

試してみてください:

for my $key (keys %hash) {
    print "$key\t$hash{$key}\n";
}
于 2012-09-06T16:29:26.577 に答える
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

タイトルは、値に基づいてキーを出力するように要求します。

過酷なテーブルのキーと値が1対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";
     }
}     

値配列の 2 番目のメンバーによって値からキーを取得できることに注意してください。

于 2012-09-06T22:02:55.910 に答える