我有一个数组,如下所示:
f = [["Wed, 12-31", 120.0],["Thu, 01-01", 120.0], ["Thu, 01-01", 120.0]]
我可以将其转换为散列并删除重复键:
h = Hash[ *f.collect { |v| [v] }.flatten ]
# => {"Wed, 12-31"=>120.0, "Thu, 01-01"=>120.0}
这几乎就在那里,但我想对具有相同日期字符串的元素的值求和,上述数组的期望结果将是这样的:
{"Wed, 12-31"=>120.0, "Thu, 01-01"=>240.0}
我怎样才能做到这一点?
最佳答案
这个有效:
result = Hash.new(0)
f = [["Wed, 12-31", 120.0],["Thu, 01-01", 120.0], ["Thu, 01-01", 120.0]]
f.each { |subarray| result[subarray[0]] += subarray[1] }
puts result
如果你喜欢花哨的,你可以使用 .inject()
关于ruby - 将数组转换为哈希,同时删除重复键和添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27735384/