我有一個哈希看起來像這樣:沖銷多值哈希在Perl
{ bmw => { id => 1, color => brown } }
{ mercedes => { id => 2, color => black } }
我要扭轉在Perl這個哈希這樣我只是得到ID => name_of_car的映射。我需要以某種方式使用反向功能嗎?
注意:我總是可以遍歷原始散列,並在新散列中相應地分配鍵和值,我想知道是否存在一種滑動方式。
我有一個哈希看起來像這樣:沖銷多值哈希在Perl
{ bmw => { id => 1, color => brown } }
{ mercedes => { id => 2, color => black } }
我要扭轉在Perl這個哈希這樣我只是得到ID => name_of_car的映射。我需要以某種方式使用反向功能嗎?
注意:我總是可以遍歷原始散列,並在新散列中相應地分配鍵和值,我想知道是否存在一種滑動方式。
不需要一個漂亮的方式:
my %h = (
bmw => { id => 1, color => "brown" } ,
mercedes => { id => 2, color => "black" }
);
my %j = map { ($h{$_}{id} => $_) } keys %h;
for (keys %j) {
print "$_ $j{$_}\n";
}
輸出:
$ ./silly.pl 1 bmw 2 mercedes
您發佈的內容無效perl的,但我想我把你的意思。一個光滑的方式來做到這一點將是一個hash slice和一張地圖。
my %hash = (
bmw => { id => 1, color => 'brown' },
mercedes => { id => 2, color => 'black' },
);
my %new_hash;
@new_hash{ map { $_->{id} } values %hash } = keys %hash;
我認爲你應該接受我們的答案之一。你怎麼能比Kinopiko的一個班輪滑溜? – masonk 2010-07-26 00:11:21