Bra*_*riy 17 ruby arrays hashmap
我想将两个数组"压缩"成哈希.
从:
['BO','BR']
['BOLIVIA','BRAZIL']
至:
{BO: 'BOLIVIA', BR:'BRAZIL'}
我该怎么做?
lur*_*ker 30
我会这样做:
keys = ['BO','BR']
values = ['BOLIVIA','BRAZIL']
Hash[keys.zip(values)]
# => {"BO"=>"BOLIVIA", "BR"=>"BRAZIL"}
如果你想要键的符号,那么:
Hash[keys.map(&:to_sym).zip(values)]
# => {:BO=>"BOLIVIA", :BR=>"BRAZIL"}
在Ruby 2.1.0或更高版本中,您可以将它们写为:
keys.zip(values).to_h
keys.map(&:to_sym).zip(values).to_h
只需使用两者中的一个Array,然后将其转置并生成Hash:
keys = ['BO','BR']
values = ['BOLIVIA','BRAZIL']
Hash[[keys,values].transpose]
# => {"BO"=>"BOLIVIA", "BR"=>"BRAZIL"}
或新的红宝石版本:
[keys,values].transpose.to_h
讽刺的是,如果你只是在问题中加入一些点和下划线,它就会起作用:
我想要“灰
zip”中的两个数组to_h
ary1.zip(ary2).to_h
# => { 'BO' => 'BOLIVIA', 'BR' => 'BRAZIL' }
实际上,您在输出哈希中指定键应该是Symbols 而不是Strings,因此我们需要首先转换它们:
ary1.map(&:to_sym).zip(ary2).to_h
# => { BO: 'BOLIVIA', BR: 'BRAZIL' }
| 归档时间: | 
 | 
| 查看次数: | 6701 次 | 
| 最近记录: |