我在ruby中有两个散列,我想比较两个散列,然后用不重复键的键和值创建另一个散列。
A = {"name1" => 123, "name2" => 321, "name3" => 412 }
B = {"name1" => 412, "name2" => 412, "name4" => 444}
我想将b与a进行比较,并获得一个新的散列,其中包含a中不存在的键和键的值。
C = {"name4" => 444}
你能帮帮我吗?
谢谢
当做
最佳答案
您可以使用Hash#select
或Hash#reject
而不使用bang:
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}