作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有两个散列,它们应该具有相同的键,例如:
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}
该 block 使用键、旧值、新值调用。并将 block 的返回值用作新值。
关于ruby - 如何在 ruby 中合并两个具有相同键的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634150/
我是一名优秀的程序员,十分优秀!