2017-04-11 23 views
2

我有兩個紅寶石哈希,我想比較兩個,然後創建另一個鍵和值的非重複鍵。從兩個哈希獲得另一個在紅寶石中不重複的鍵

A = {"name1" => 123, "name2" => 321, "name3" => 412 } 
B = {"name1" => 412, "name2" => 412, "name4" => 444} 

我想用一個比較B,並且獲得具有不存在於A.鍵的鍵和值的新的哈希

C = {"name4" => 444} 

你能幫助我嗎? 感謝 問候

回答

4

您可以使用Hash#selectHash#reject沒有一聲:

C = B.select { |k, _| !A[k] } 
#=> {"name4"=>444} 
B.reject { |k, _| A[k] } 
#=> {"name4"=>444} 

如果您的哈希值包含布爾值,使用nil?方法(A[k].nil?)或Hash#has_key?A.has_key?)。你

也可以使用Hash#delete_if方法:

C = B.delete_if { |k, v| A.has_key?(k) } 
#=> {"name4"=>444} 
+0

@Eric,感謝筆記,編輯:) – Ilya

+0

不客氣。最後,請注意'delete_if'突變'B'。 –

+0

太棒了!謝謝兩位! – user2668530