【问题标题】:Add values of identical keys together in Ruby hash在 Ruby 哈希中将相同键的值相加
【发布时间】:2013-03-29 22:28:49
【问题描述】:

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

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

我希望生成的哈希表是: 哈希 = { a => 3, b => 3 }

【问题讨论】:

  • 一开始怎么会有重复的键?那不是多图吗?
  • 同意@squiguy,哈希根据其定义具有唯一键。
  • 这是有道理的,我假设这就是为什么 Ruby 只获取键的最新实例并使用该值。

标签: ruby hash hashtable key-value-store


【解决方案1】:

使用散列的块形式#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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 2021-11-15
    • 2015-12-05
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多