在Ruby哈希中对键进行排序,而不更改其原始位置的关联值

Cyz*_*far 0 ruby sorting

我在排序看起来像这样的Hash时遇到了麻烦:

{9=>["Blake Johnson", "Jack Bauer"], 
 7=>["Bart Simpson", "Homer Simpson"],
 10=>["Avi Flombaum", "Jeff Baird"]}
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

{7=>["Blake Johnson", "Jack Bauer"],
 9=>["Bart Simpson", "Homer Simpson"],
 10=>["Avi Flombaum", "Jeff Baird"]}
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 5

这个要求很奇怪,但这应该有效:

hash = {
  9 => ["Blake Johnson", "Jack Bauer"],
  7 => ["Bart Simpson", "Homer Simpson"],
  10 => ["Avi Flombaum", "Jeff Baird"]
}

hash.keys.sort.zip(hash.values).to_h
#=> {7=>["Blake Johnson", "Jack Bauer"], 9=>["Bart Simpson", "Homer Simpson"], 10=>["Avi Flombaum", "Jeff Baird"]}
Run Code Online (Sandbox Code Playgroud)