将数组中的值放入只有键的哈希值

时间:2015-01-05 03:37:22

标签: ruby arrays hash

我们说我有一系列值,例如["Sonya", "New York", "America"]。然后我只使用密钥哈希,例如{name, state, country}。如何将数组中的值分配给散列中的各自键?我知道这是一个循环,但我无法弄清楚。

2 个答案:

答案 0 :(得分:2)

这样的东西?它使用Array#zip合并valueskeys中的每个元素,然后调用Array#to_h将其转换为Hash

values = ["Sonya", "New York", "America"]
keys   = [:name, :state, :country]
hash   = keys.zip(values).to_h
# => {:name=>"Sonya", :state=>"New York", :country=>"America"}

答案 1 :(得分:1)

@ August答案的一个略微变体是:

[keys, values].transpose.to_h
  #=> {:name=>"Sonya", :state=>"New York", :country=>"America"} 

Hash[[keys, values].transpose]

适用于2.0之前的Ruby版本。请注意,transposezip的反面。