2012-10-02 29 views
0

我通常使用着名的sort方法對ruby散列進行排序,如下例所示。但是,當字符串鍵中有一個下劃線時,這會非常失敗。例如:在鍵中用下劃線對ruby散列進行排序

h = {"b" => 1, "a" => 2} 
Hash[h.sort] 

完美排序哈希值。但是,當散列是像

h = {"b_d" => 1, "a_v" => 2} 

我沒有得到所需的排序順序。這裏要注意的是h.sort對散列進行排序併產生一個Enumerable對象。但是當我使用Hash[h.sort]將對象轉換回哈希時,它在這裏失去了順序。任何有關更好過程的建議都可能有所幫助。

注:我使用的是Ruby 1.8.7,所以OrderedHash沒有太多的鏡頭。

+0

有什麼區別?你爲什麼要整理它? – shime

+0

在訂購params字符串的位置簽署OAuth請求。 – Aravind

+1

你斷言第一個例子「完美排序哈希」很可能是巧合。如果你只有2個鍵,那麼任何僞隨機排序都有50%的機會是「正確的」 – Gareth

回答

2

在Ruby 1.8.7中,只要您轉換回Hash,您就一定會失去您的訂購。你將不得不擺脫香草Hash讓它起作用 - 也許嘗試保持Enumerable你從sort回來,並儘可能長時間使用它?

相關問題