my %hash1 = (
a => ["turkey, mexico"],
b => ["india, china"],
c => ["england, vietnam"],
d => ["usa"],
);
我想獲取墨西哥相關密鑰。 我怎樣才能得到它?Perl:查找數組散列的密鑰
嘗試:
print @($a{$hash1{"mexico"}})
my %hash1 = (
a => ["turkey, mexico"],
b => ["india, china"],
c => ["england, vietnam"],
d => ["usa"],
);
我想獲取墨西哥相關密鑰。 我怎樣才能得到它?Perl:查找數組散列的密鑰
嘗試:
print @($a{$hash1{"mexico"}})
也許如果你既可以通過哈希鍵進行迭代,並返回一個包含它的陣列,或者如果你創建另一個哈希值。對於第二種,它可能看起來像這樣:
my %newhash;
for my $key (keys %hash1) {
my @list = split /,/=> $hash1{$key}[0];
# or perhaps: my @list = map split(/, /, $_), @{ $hash1{$key} };
for (@list) {
$newhash{$_} = $key;
}
}
$newhash{mexico} eq 'a'; #true
這不是非常有效,但它會工作。
print grep { $hash1{$_}[0] =~ /mexico/ } keys %hash1;
,並在哈希值與多個元素數組的情況下,
print grep { grep { $_ eq "mexico" } @{$hash1{$_}} } keys %hash1;
你嘗試過這麼遠嗎?我會構建一個將單個國家映射到密鑰的反向散列。 – amon
@amon:我想以另一種方式創建它,但無法確定映射是否會增加很多。 – iDev