首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中,将数组转换为散列的最佳方法是什么

在Ruby中,将数组转换为散列的最佳方法是什么
EN

Stack Overflow用户
提问于 2008-09-02 13:53:55
回答 6查看 145.5K关注 0票数 134

在Ruby中,给定以下形式之一的数组...

代码语言:javascript
复制
[apple, 1, banana, 2]
[[apple, 1], [banana, 2]]

...what是将其转换为以下形式的散列的最佳方法...

代码语言:javascript
复制
{apple => 1, banana => 2}
EN

回答 6

Stack Overflow用户

发布于 2008-09-02 14:14:08

只需使用Hash[*array_variable.flatten]

例如:

代码语言:javascript
复制
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键和值可以按预期工作。

票数 149
EN

Stack Overflow用户

发布于 2013-01-11 21:54:40

您还可以使用以下命令将2D数组简单地转换为散列:

代码语言:javascript
复制
1.9.3p362 :005 > a= [[1,2],[3,4]]

 => [[1, 2], [3, 4]]

1.9.3p362 :006 > h = Hash[a]

 => {1=>2, 3=>4} 
票数 5
EN

Stack Overflow用户

发布于 2008-09-02 14:16:35

我不确定这是不是最好的方法,但这是可行的:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档