我有两个看起来像这样的哈希:
h1 = {key1: 'Roses are', key2: 'Violets are'}
h2 = {key1: 'Red', key2: 'Blue'}
我想通过密钥加入它们,以便我得到这样的哈希:
result = {'Roses are' => 'Red', 'Violets are' => 'Blue'}
我有一些代码可以解决问题:
result = {}
h1.each { |key, value| result[value] = h2[key] }
我想知道标准库中是否有一个方法来执行此操作,或者是否可以使用更少的代码完成此操作。
答案 0 :(得分:5)
你想要一个1:1的映射,所以map
可以工作:
h1.map { |k, v| ... }
h1
的值成为新密钥:
h1.map { |k, v| [v, ...] }
h2
的相应值成为新值:
h1.map { |k, v| [v, h2[k]] }
#=> [["Roses are", "Red"], ["Violets are", "Blue"]]
并且to_h
将其转换为哈希值:
h1.map { |k, v| [v, h2[k]] }.to_h
#=> {"Roses are"=>"Red", "Violets are"=>"Blue"}
答案 1 :(得分:1)
压缩值:
h1 = {key1: 'Roses are', key2: 'Violets are'}
h2 = {key1: 'Red', key2: 'Blue'}
result = h1.values.zip(h2.values).to_h