在Ruby中,给定以下形式之一的数组...
[apple, 1, banana, 2]
[[apple, 1], [banana, 2]]
...what是将其转换为以下形式的散列的最佳方法...
{apple => 1, banana => 2}
发布于 2008-09-02 14:14:08
只需使用Hash[*array_variable.flatten]
例如:
a1 = ['apple', 1, 'banana', 2]
h1 = Hash[*a1.flatten(1)]
puts "h1: #{h1.inspect}"
a2 = [['apple', 1], ['banana', 2]]
h2 = Hash[*a2.flatten(1)]
puts "h2: #{h2.inspect}"
使用Array#flatten(1)
限制了递归,因此Array
键和值可以按预期工作。
发布于 2013-01-11 21:54:40
您还可以使用以下命令将2D数组简单地转换为散列:
1.9.3p362 :005 > a= [[1,2],[3,4]]
=> [[1, 2], [3, 4]]
1.9.3p362 :006 > h = Hash[a]
=> {1=>2, 3=>4}
发布于 2008-09-02 14:16:35
我不确定这是不是最好的方法,但这是可行的:
a = ["apple", 1, "banana", 2]
m1 = {}
for x in (a.length / 2).times
m1[a[x*2]] = a[x*2 + 1]
end
b = [["apple", 1], ["banana", 2]]
m2 = {}
for x,y in b
m2[x] = y
end
https://stackoverflow.com/questions/39567
复制相似问题