[[1, 20],[2,30],[1,5],[4,5]]
在ruby中如何通过这个数组并添加第二个元素,如果第一个元素与输出相同,则输出如下:
[[1, 25],[2,30],[4,5]]
答案 0 :(得分:4)
如果顺序不重要,将对插入哈希,如果密钥已经存在则添加,然后将哈希展平回数组是一种巧妙的方法。在irb:
>> a = [[1, 20],[2,30],[1,5],[4,5]]
=> [[1, 20], [2, 30], [1, 5], [4, 5]]
>> a.inject(Hash.new(0)) { |h, p| h[p[0]] += p[1]; h }.to_a
=> [[1, 25], [2, 30], [4, 5]]
答案 1 :(得分:2)
Ruby中的解决方案:
L = [[1, 20],[2,30],[1,5],[4,5]]
d = {}
L.each{|k,v| d[k] = (d[k]||0) + v}
Python中的解决方案:
L = [[1, 20],[2,30],[1,5],[4,5]]
d = {}
for k,v in L:
d[k] = d.get(k,0) + v
答案 2 :(得分:1)
你可以这样做(警告,输出有点乱码,你可能想转换成数组):
myArray = [[1, 20],[2,30],[1,5],[4,5]]
outputHash = {}
myArray.each do |values|
outputHash[values[0]] = outputHash[values[0]].to_i + values[1]
end
puts outputHash