2013-02-27 56 views
0

我有一个散列{:a => b},我想向该键添加一个值,并将其转换为一个保持前一个值的数组。红宝石散列值到数组数组

那么结果将是{:A => [B,C]}

是否有更好的方法来做到这一点不是通过哈希迭代?

+1

否:-)无论如何你必须迭代,所以你的问题是什么? “什么是最短路径......”? – mliebelt 2013-02-27 14:25:40

回答

4

试试这个。

h = {a: b} 
h[:a] = ((a[:a].is_a? Array) ? a[:a] : [a[:a]]) << c 
+0

原始问题没有提及'b'是否可能已经是一个数组。如果可能的话,您可能需要添加支票。 – 2013-02-27 14:35:02

+0

@DaveS。思考一下。将更新答案 – 2013-02-27 14:42:26

0

简单的解决办法是建立一个数组哈希表:

h = {} 
h[:a] = [] 
h[:a].push(b) 
h[:a].push(c) 

我的意思是:即使只有一个值使用数组。这使得处理更容易。