假设我在Ruby中有一个哈希,就像这样:
d = {1 => 'one', 3 => 'three', 2 =>'two'}
Run Code Online (Sandbox Code Playgroud)
我希望得到
x = [1, 2, 3]
y = ['one', 'two', 'three']
Run Code Online (Sandbox Code Playgroud)
也就是说,我想要排序的键x,以及相应的值y.我可能想要使用自定义排序顺序x.
什么是最干净,最简单的方法?
我的原始答案
x = d.keys.sort
y = x.map {|k| d[k]}
Run Code Online (Sandbox Code Playgroud)
但你也应该看到格伦麦克唐纳的回答
x,y = d.sort.transpose
Run Code Online (Sandbox Code Playgroud)
简单:
x,y = d.sort.transpose
Run Code Online (Sandbox Code Playgroud)
或者,使用自定义排序:
x,y = d.sort_by {|k,v| whatever}.transpose
Run Code Online (Sandbox Code Playgroud)