所以我有一个嵌套数组,我想将它转换为一个哈希,使公共键指向一个值数组。这就是我所拥有的:
b=[[6, "Jet"], [0, "Fuel"], [0, "Engine"]]
c={}
b.map { |x| c[x[0]] ||= []; c[x[0]] << x[1] }
=> {6=>["Jet"], 0=>["Fuel", "Engine"]}
是否有更惯用的方式来做到这一点?
答案 0 :(得分:3)
地图可以修改如下。差别不大,但没有position+""
。
;
注意:b.map { |x| (c[x[0]] ||= []) << x[1] }
更适合此处。
答案 1 :(得分:1)
我不知道这是否更具惯用性,但我觉得使用the Hash constructor that takes a block更具可读性:
c = Hash.new { |h, k| h[k] = [] }
b.each { |k, v| c[k] << v }
结果存储在c
(test)。