【发布时间】:2013-05-04 14:02:12
【问题描述】:
我有一个哈希数组,我合并了包含特定重复键值的哈希。
combined_keywords = new_array_of_hashes.each_with_object(Hash.new(0)){|oh, newh|
newh[oh[:keyword]] += oh[:total_value].to_f
}
这会创建一个如下所示的哈希数组:
{ :ACTUAL_KEYWORD => ACTUAL_TOTAL_VALUE }
我是 ruby 新手,我不太了解这背后的魔力。我有一个额外的关键和价值来巩固,现在我迷路了。问题的根源是我不明白这一行中的合并是如何发生的:newh[oh[:keyword]] += oh[:total_value].to_f
我试过这个没有运气:
combined_keywords = new_array_of_hashes.each_with_object(Hash.new(0)){|oh, newh|
newh[oh[:keyword]] += oh[:total_value].to_f
newh[oh[:keyword]] += oh[:revenue_per_transaction].to_f
}
我真的只需要一个合并哈希数组,每个类似于:
{ :keyword => "ACTUAL_KEYWORD", :total_value => ACTUAL_TOTAL_VALUE, :revenue_per_transaction => ACTUAL_REVENUE }
编辑:
输入
new_array_of_hashes = [
{ keyword: 'foo', total_value: 1, revenue_per_transaction: 5 },
{ keyword: 'bar', total_value: 2, revenue_per_transaction: 4 },
{ keyword: 'bar', total_value: 4, revenue_per_transaction: 4 },
{ keyword: 'foo', total_value: 3, revenue_per_transaction: 5 },
]
期望的输出
combined_keywords = [
{ keyword: 'foo', total_value: 4, revenue_per_transaction: 10 },
{ keyword: 'bar', total_value: 6, revenue_per_transaction: 8 },
]
【问题讨论】:
-
你能给出一个包含 4 个预期输入的样本以及你想要的输出吗?
-
我已经添加了我想要的输出
标签: ruby-on-rails ruby hash