Ruby使用特定键将Array转换为Hash值

Dan*_*der 1 ruby arrays hashmap

有没有办法从数组中提取值并在Ruby中为每个值分配一个唯一的键?

我希望能够改变这个数组:

["12", "21", "1985"]
Run Code Online (Sandbox Code Playgroud)

进入这个哈希:

{:month => "12", :day => "21", :year => "1985"}
Run Code Online (Sandbox Code Playgroud)

我宁愿不单独分配每个值,如下所示:

arr = ["12", "21", "1985"]
bday_hash = {:month => arr[0], :day => arr[1], :year => arr[2]}
Run Code Online (Sandbox Code Playgroud)

Md.*_*mon 8

您可以使用 #zip

your_array = ["12", "21", "1985"]
keys = ['month', 'day', 'year']
keys.zip(your_array).to_h
Run Code Online (Sandbox Code Playgroud)


Mik*_*iet 5

您可以获取键数组,将其压缩为值,然后转换为哈希

keys = [:month, :day, :year]
values = ["12", "21", "1985"]
Hash[keys.zip(values)]
# => {:month=>"12", :day=>"21", :year=>"1985"} 
Run Code Online (Sandbox Code Playgroud)

  • 是的,你是对的。文档说“可转换为哈希的对象”。转换是通过`.to_hash`完成的,散列仅返回self。一开始我误读了代码,并认为转换是通过“键值对”路由完成的,该路由将涉及一个中间哈希和一个数组。在这种情况下,最好还是使用文字。:) (3认同)