将Ruby哈希拆分为已排序的键/关联值

Pet*_*ter 4 ruby

假设我在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.

什么是最干净,最简单的方法?

jrh*_*cks 8

我的原始答案

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)


gle*_*ald 8

简单:

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)