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