[英]How do I access keys by value in a Perl hash of hashes?
我有这样的哈希哈希:
$hashtest{ 1 } = {
0 => "A",
1 => "B",
2 => "C"
};
例如,如何获取hash {1}的B值?
$hashtest{'B'}{1}
其他人提供了众所周知的鱼
Perl有免费的在线(在您的命令提示符下)文档。 以下是一些相关链接:
根据您对其他响应的评论,您可以反转哈希(即交换键和值)。
但是只有当您确定原始值中没有重复的值时,请谨慎执行此操作,因为此操作仅保留其中一个值。
#!/usr/bin/perl
use 5.10.1;
use warnings;
use strict;
my %hashtest;
$hashtest{ 1 } = { 0 => "A", 1 => "B", 2 => "C" };
my %rev = reverse %{$hashtest{1}};
say $rev{B};
输出:
1个
$hashtest{ 1 } = { 0 => "A", 1 => "B", 2 => "C" };
my $index;
my $find = "B";
foreach my $key (keys %{ $hashtest{1} }) {
if($hashtest{1}{$key} eq $find) {
$index = $key;
last;
}
}
print "$find $index\n";
我认为,由于您使用数字作为哈希键,因此应该使用数组。 否则,当反转哈希时,您将丢失重复的密钥。
样例代码:
use strict;
use warnings;
use List::MoreUtils 'first_index';
my $find = 'A';
my @array = qw{ A B C };
my $index = first_index { $_ eq $find } @array;
Perl数据结构手册将帮助您了解Perl中的数据结构。
如果所有键都是整数,则很可能要处理数组而不是散列:
$array[1] = [ qw( A B C ) ]; # Another way of saying [ 'A', 'B', 'C' ]
print $array[1][1]; # prints 'B'
$hashtest{1}{1};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.