ruby - 将数组转换为哈希,同时删除重复键和添加值

标签 ruby arrays hash enumerable

我有一个数组,如下所示:

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/

相关文章:

ruby-on-rails - Heroku postgresql 最大连接数

ruby-on-rails - 我应该在哪里放置 RSpec 测试的种子数据?

javascript - 更改 window.location.hash 而不重新加载页面/网站

hash - 如何在redis中 "EXPIRE" "HSET"子键?

ruby - 参数是通过引用还是值传递给方法?

ruby - 如何将变量传递给动态更新的 Ruby proc?

javascript - 删除数组显示中的 NaN

javascript - 在 JavaScript 中使用对象数组

mysql - 从查询中获取并回显 mysql 数组

python - 构建一个可以根据其他 pd.DataFrame 功能导出新的哈希列的函数