比方说,我有这样的红宝石的哈希:拆分一个Ruby散列到排序键/关联值
d = {1 => 'one', 3 => 'three', 2 =>'two'}
,我希望得到
x = [1, 2, 3]
y = ['one', 'two', 'three']
就是我想要的分类x
中的键和y
中的对应值。我可能想使用x
的自定义排序顺序。
什么是最干净,最简单的方法呢?
比方说,我有这样的红宝石的哈希:拆分一个Ruby散列到排序键/关联值
d = {1 => 'one', 3 => 'three', 2 =>'two'}
,我希望得到
x = [1, 2, 3]
y = ['one', 'two', 'three']
就是我想要的分类x
中的键和y
中的对应值。我可能想使用x
的自定义排序顺序。
什么是最干净,最简单的方法呢?
我原来的答复
x = d.keys.sort
y = x.map {|k| d[k]}
但你也应该看到格伦·麦克唐纳的答案
x,y = d.sort.transpose
x, y = d.keys.sort{|a,b| a <=> b}.inject([]){|result, key| result << [key, d[key]]}.transpose
...产生的那种明确的,所以你可以把它改成任何你喜欢的。
我可能会问,为什么你有数字键,而不是数组中的哈希?或者这对你的真实数据集更有意义? – 2009-10-19 00:25:31
绝对它使我的真实数据集更有意义。 – Peter 2009-10-19 00:43:52