Ruby哈希:基于值(值是值数组)对哈希进行排序

3

我希望根据哈希值中值的重新排序返回一个新的哈希值。这些值本身是整数数组。

例如:

hsh = {"c2" => [44,2], "c1" => [11,33], "c9" => [23,7]}

我希望能够根据值0或值1中的任意一个返回重新排序的哈希表。
非常感谢您的任何帮助 - 谢谢大家。

1
实际上,Rails 有一个有序哈希表,而且如果我没记错的话,Ruby 1.9 也有一个有序哈希表... - DGM
Ruby 1.9 记录哈希表的插入顺序,但并不对其进行排序。 - the Tin Man
1个回答

5

从这个问题的性质来看,我假设这是针对 Ruby 1.9 版本的。

p Hash[hsh.sort_by{|k, v| v[0]}]
# => {"c1"=>[11, 33], "c9"=>[23, 7], "c2"=>[44, 2]}

p Hash[hsh.sort_by{|k, v| v[1]}]
# => {"c2"=>[44, 2], "c9"=>[23, 7], "c1"=>[11, 33]}

1
正是我在寻找的@sawa - 谢谢。 是的,这是ruby-1.9.2。 - Gavin
当哈希类中没有列出sort_by方法时,如何将其应用于哈希? - Jeremy Smith
@Jeremy 在我的情况下,我像往常一样做,因为我已经知道如何使用它。在你的情况下,你可以选择 (i) 在 Stackoverflow 上提出独立问题,(ii) 寻找更好的文档,(iii) 尝试使用 ri、rdoc 等更认真地查找文档,或者 (iv) 通过各种示例尝试,直到你能够推断出它是如何工作的。 - sawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接