【问题标题】:How to multiply values of same keys in hashes如何将哈希中相同键的值相乘
【发布时间】:2015-12-05 13:56:11
【问题描述】:

给定两个哈希值hash1hash2,它们的大小可能不同,我需要将任何重复键的值相乘;不应考虑额外的键值对。

以下面的例子为例:

hash1 = { a: 2, b: 3, c: 4 }
hash2 = { a: 3, b: 4 }

常用键是:a:b(不应考虑:c)。我该怎么做才能只选择:a:b并返回2 * 3(对于:a)和3 * 4(对于:b),即数组[6, 12]

【问题讨论】:

  • 两个哈希中的公共键在两个哈希中是否相同(相对)顺序?如果不是,则不清楚应该如何在预期的数组中对这些值进行排序。你怎么知道是[6, 12] 而不是[12, 6]
  • 我仍然不确定输出应该是什么样子。

标签: ruby hash


【解决方案1】:
common_keys = hash1.keys & hash2.keys
multiply = []
common_keys.each do |key|
  multiply << hash1[key] * hash2[key]
end
puts multiply

【讨论】:

  • 这并没有给出 OP 的要求。
  • 谢谢@sawa。已编辑。
【解决方案2】:
hash1.map { |k, v| v * hash2[k] if hash2.key? k }.compact

【讨论】:

  • 这比我的回答更干净、更紧凑
猜你喜欢
  • 2013-03-29
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2013-02-24
  • 2019-07-09
  • 1970-01-01
  • 2011-10-04
相关资源
最近更新 更多