我有一个散列{:a => b},我想向该键添加一个值,并将其转换为一个保持前一个值的数组。红宝石散列值到数组数组
那么结果将是{:A => [B,C]}
是否有更好的方法来做到这一点不是通过哈希迭代?
我有一个散列{:a => b},我想向该键添加一个值,并将其转换为一个保持前一个值的数组。红宝石散列值到数组数组
那么结果将是{:A => [B,C]}
是否有更好的方法来做到这一点不是通过哈希迭代?
试试这个。
h = {a: b}
h[:a] = ((a[:a].is_a? Array) ? a[:a] : [a[:a]]) << c
原始问题没有提及'b'是否可能已经是一个数组。如果可能的话,您可能需要添加支票。 – 2013-02-27 14:35:02
@DaveS。思考一下。将更新答案 – 2013-02-27 14:42:26
简单的解决办法是建立一个数组哈希表:
h = {}
h[:a] = []
h[:a].push(b)
h[:a].push(c)
我的意思是:即使只有一个值使用数组。这使得处理更容易。
否:-)无论如何你必须迭代,所以你的问题是什么? “什么是最短路径......”? – mliebelt 2013-02-27 14:25:40