0

我有一个从 .txt 文件创建的哈希表。哈希表中的某些元素具有相同的键。Ruby 采用最后一个实例并在哈希表中使用该值。我将如何将重复键的值加在一起?

例如,如果我有一个哈希表: hash = { a => 1, a => 2, b => 3 }

我希望得到的哈希表是: hash = { a => 3, b => 3 }

4

1 回答 1

3

使用散列的块形式#Update

如果您想通过将当前哈希中的值与存储在另一个哈希中的与重复键关联的值相加来替换当前哈希中的值,您可能需要使用Hash#update的块形式。该块定义了如何处理重复键;在这种情况下,我们只需将它们的值相加。例如:

h1 = { a: 1, b: 3 }
h2 = { a: 2 }
h1.update(h2) { |k, v1, v2| v1 + v2 }
# => {:a=>3, :b=>3}

请注意,这是一个就地更改;您实际上是在修改h1中的值。如果您想返回包含合并值的新哈希而不是覆盖h1,只需使用Hash#merge而不是 Hash#update。

于 2013-04-08T01:20:58.463 回答