使用h1
值交换h2
密钥的最短途径是什么:
h1 = {a: 1, b:2, c:3}
h2 = {a: 'a1', b: 'b1'}
这是我想在交换后得到的结果:
h1 = {a1: 1, b1: 2, c:3}
答案 0 :(得分:3)
怎么样:
h1 = h1.map{|key, val| [h2.fetch(key,key).to_sym, val]}.to_h
答案 1 :(得分:2)
apply(column_sums, 2, which.max)
#[1] 2 2
您也可以使用h1 = {a: 1, b:2, c:3}
h2 = {a: 'a1', b: 'b1'}
Hash[h1.map { |k, v| [(h2[k] || k).to_sym ,v] }]
# returns {:a1=>1, :b1=>2, :c=>3}
代替.to_h
Hash[]
答案 2 :(得分:0)
h1 = {a: 1, b:2, c:3}
h2 = {a: 'a1', b: 'b1'}
h1 = h1.inject({}){ |h, (k, v)| h2.has_key?(k) ? h[h2[k].to_sym] = v : h[k] = v; h }
#=> {:a1=>1, :b1=>2, :c=>3}
答案 3 :(得分:0)
以防万一,实时哈希的解决方案:
result = Hash.new { |hash, k| h1[h2.key(k) || k] }
现在可以扩展 h1
和h2
,但结果将反映新的添加(不是已经解决的密钥的更改)。
要使用预先存在的h1
和h2
来实例化此哈希,需要执行以下操作:
(h2.values | (h1.keys - h2.keys)).map { |k| [k, result[k]] }.to_h