我想給一個鍵多個值並打印它們。這裏是代碼,但它用新值替換了鍵。在散列時將多個值賦給perl中的一個鍵
#!/usr/bin/perl
%coins = (
"Quarter" , 25,
"Dime" , 10,
"Quarter", 5
);
foreach $value (sort { $coins{$a} <=> $coins{$b} } keys %coins) {
print "$value $coins{$value} \n";
}
我想給一個鍵多個值並打印它們。這裏是代碼,但它用新值替換了鍵。在散列時將多個值賦給perl中的一個鍵
#!/usr/bin/perl
%coins = (
"Quarter" , 25,
"Dime" , 10,
"Quarter", 5
);
foreach $value (sort { $coins{$a} <=> $coins{$b} } keys %coins) {
print "$value $coins{$value} \n";
}
一個密鑰不能有多個值。你可以得到的最接近的值是一個arrayref,並且在該數組中有多個值。
%coins = (
Quarter => [25, 5],
Dime => [10],
);
雖然,你擁有的數據,它看起來像你應該扭轉結構:
%coins = (
5 => "Quarter",
25 => "Quarter",
10 => "Dime"
);
你能告訴我該怎麼做嗎? – 2013-03-26 16:21:48
@MuhammadSaad在線Perl手冊包含Perl中的[數據結構簡介](http://perldoc.perl.org/perldsc.html)。請用它來回答你的問題。 – 2013-03-26 16:32:52
似乎合法的Perl替代的價值。 因爲第一個字段是關鍵字,第二個字段是值。
所以,你有2個解決方案來解決你的問題:
1反轉鍵/值(最差的解決方案)
#!/usr/bin/perl
%coins = (
25, "Quarter",
10, "Dime",
5, "Quarter"
);
foreach $value (sort { $coins{$a} <=> $coins{$b} } keys %coins) {
print "$value $coins{$value} \n";
}
有了這個methoid,你不能有2個 「價值觀」 與相同「鑰匙」 ......很明顯
2.哈希/陣列(更好的解決方案)
#!/usr/bin/perl
%coins = (
"Quarter" => [25, 5, 15],
"Dime" => [10]
);
foreach $value (keys %coins) {
my @[email protected]{$coins{$value}};
foreach my $index (sort { $a <=> $b } @valueArray) {
print "$value $index \n";
}
}
將陣列與哈希表結合使用
您可以將值存儲在數組中。 在哈希分配其參考。 因此,無論何時將值推送到數組,它都可以在哈希中訪問。 如果你給了匿名數組,你必須每次手動賦值。 例如:
@array_value=(1);
%hash=('number' => \@array_value);
push @array_value,3;
print "@{$hash{'number'}}";
每當你想在哈希添加值,你可以在陣列「@array_value」添加它。 你可以像下面那樣取消引用哈希值中的值數組 @ {$ hash {'number'}}。
你想完成什麼?爲什麼'Quarter'映射到5,不應該是'Nickel'? – Barmar 2013-03-26 16:31:55
你期望'$ coins {Quarter}'返回什麼? – cjm 2013-03-26 17:51:25