如何合并在ruby中具有相同键的两个哈希
我有两个哈希应该有相同的键,如:
a = {a: 1, b: 2, c: 3} b = {a: 2, b: 3, c: 4}
我想总结这样的每个值:
if a.keys == b.keys a.values.zip(b.values).map{|a, b| a+b} end
但是如果键的顺序不同,则此代码不起作用,如b = {a: 2, c: 4, b: 3}
。
如何在考虑密钥顺序的情况下编写代码?
使用Hash#merge
或Hash#merge!
:
a = {a: 1, b: 2, c: 3} b = {a: 2, c: 4, b: 3} a.merge!(b) { |k, o, n| o + n } a # => {:a=>3, :b=>5, :c=>7}
使用键,旧值,新值调用该块。 并且块的返回值用作新值。