我已經散列的散列這樣的:如何通過散列的Perl散列中的值訪問鍵?
$hashtest{ 1 } = {
0 => "A",
1 => "B",
2 => "C"
};
例如,我怎樣才能取散列{1}的B的值?
$hashtest{'B'}{1}
我已經散列的散列這樣的:如何通過散列的Perl散列中的值訪問鍵?
$hashtest{ 1 } = {
0 => "A",
1 => "B",
2 => "C"
};
例如,我怎樣才能取散列{1}的B的值?
$hashtest{'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";
$hashtest{1}{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};
輸出:
既然你已經使用號碼的散列鍵,在我看來,你應該使用數組來代替。否則,在反轉散列時,您將丟失重複的鍵。
示例代碼:
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 Data Structures Cookbook將幫助您瞭解在Perl的數據結構。
如果所有的按鍵都是整數,你最想處理數組,而不是哈希:
$array[1] = [ qw(A B C) ]; # Another way of saying [ 'A', 'B', 'C' ]
print $array[1][1]; # prints 'B'
但是,如果我知道的價值,我想索引?例如,我想知道哈希{1}的'A'的「索引」? – user476918 2010-10-15 13:45:00