假设我在Ruby中有这样的哈希:
d = {1 => 'one', 3 => 'three', 2 =>'two'}
我希望得到
x = [1, 2, 3]
y = ['one', 'two', 'three']
也就是说,我希望x
中的排序键和y
中的相应值。我可能想要使用x
的自定义排序顺序。
最干净,最简单的方法是什么?
答案 0 :(得分:8)
我的原始答案
x = d.keys.sort
y = x.map {|k| d[k]}
但你也应该看到格伦麦克唐纳的回答
x,y = d.sort.transpose
答案 1 :(得分:8)
易:
x,y = d.sort.transpose
或者,使用自定义排序:
x,y = d.sort_by {|k,v| whatever}.transpose
答案 2 :(得分:0)
x, y = d.keys.sort{|a,b| a <=> b}.inject([]){|result, key| result << [key, d[key]]}.transpose
...明确排序,以便您可以将其更改为您喜欢的任何内容。