2014-01-31 85 views
0

我想要合併hash1和hash2的相同值並創建第三個散列,其中hash3的鍵是hash1的鍵,而hash3的值是hash2的鍵這些相同的值比較一個散列的值與另一個值的值在perl中創建第三個散列

%hash3 = (
    0 =>3, 
    1 => 2, 
    2 => 1, 
    3 => 0 
); 
+0

爲什麼'%hash3'3中的'0'鍵? – fugu

+0

你想要做什麼?我不清楚 – fugu

+2

你應該首先用簡單的語言來制定你的任務。然後將其轉換爲代碼。現在我不知道你是如何從數據中獲得結果的。 –

回答

1

reverse%hash2,然後使用map配對從%hash1鍵與曾經被認爲是的%hash2的鍵:

my %reversed = reverse %hash2; 
my %hash3 = map { $_ => $reversed{$hash1{$_}} } keys %hash1; 

%hash3含有s:

{ 
    '1' => '2', 
    '0' => '3', 
    '3' => '0', 
    '2' => '1' 
}; 
+0

感謝您花時間!很好:) – marie

+3

@marie應該注意的是,如果原始%hash2中的值被重複並且您顛倒了您的散列,那麼您將散列數據,因爲散列中的鍵必須是唯一的。希望你意識到這一點。 –

相關問題