2011-05-20 62 views
3

我正在尋找基於散列值重新排序的新散列。這些值本身就是整數的數組。紅寶石哈希:基於值(這是值的數組)排序一個散列

例如:

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

我想能夠返回基於值任一值0或1的值重新排序的哈希值。

這裏的任何幫助非常感謝 - 謝謝大家。

+1

實際上,導軌具有有序亂碼,IIRC,紅寶石1.9具有有序散列太... – DGM 2011-05-20 23:54:22

+0

Ruby 1.9的記得哈希的插入順序,但它並沒有訂購。 – 2011-05-21 04:20:22

回答

5

從問題的性質來看,我認爲這是針對紅寶石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 2011-05-20 23:59:53

+0

如果sort_by沒有作爲該類的方法列出,那麼如何應用sort_by? – 2011-06-09 17:13:52

+0

@Jeremy在我的情況下,我照常做,因爲我已經知道如何使用它。在你的情況下,你可以(i)在Stackoverflow上提出一個獨立的問題,(ii)尋找更好的文檔,(iii)嘗試使用ri,rdoc來更認真地查找文檔,或者(iv)直到你可以推斷它是如何工作的各種例子。 – sawa 2011-06-09 19:47:18