我有一組哈希值(使用Tie :: IxHash保留的密鑰序列),我想比較每個密鑰的值。散列的數量可能會有所不同。例如,我想要計算鍵「1」分配給值「1」和「0」的次數。我知道應該有一個很好的快速方法來計算值匹配,如果我把哈希值放入一個哈希數組中,然後循環遍歷它們,但是我卡住了,無法自行計算出來。在Perl中比較多個哈希值的密鑰值
%hash1 = (1 => '1',
2 => '1',
3 => '0',
4 => '0',
);
%hash2 = (1 => '1',
2 => '1',
3 => '1',
4 => '0',
);
%hash3 = (1 => '1',
2 => '1',
3 => '0',
4 => '1',
);
%hash4 = (1 => '1',
2 => '0',
3 => '0',
4 => '1',
);
對上述預期的結果是:
$key1: $agr1 = 4; $agr0 = 0;
$key2: $agr1 = 3; $agr0 = 1;
$key3: $agr1 = 1; $agr0 = 3;
$key4: $agr1 = 2; $agr0 = 2;
現在我終於實現了通過第一哈希鍵循環,隨後比較它們其他每個哈希,由於顯而易見的原因,這是乏味和愚蠢的。
感謝您的幫助!
更正:我使用散列,而不是散列參考。相應地編輯上面的代碼。
感謝,環做工精細。我也需要將協議值放入變量中,如我的問題所示,並將它們在鍵之間進行總結。你能指出如何在你的代碼中完成這項工作嗎? –
您問題中的變量都具有相同的名稱$ agr0或$ agr1。你需要說'$ agr_1_k1_v0 = $ count {1} {0} || 0; $ agr_1_k1_v1 ...'爲每個你想要的鍵和值。所有你需要的信息都在%count哈希中,使用Data :: Dumper來打印它,你會看到。 – tangent