我想創建一個有序哈希鍵的數組。我希望它們在數組和散列中以相同的順序列出。我有這個散列。如何將按鍵推送到未排序的陣列?
h = { "a" => 3, "b" => 1, "c" = 4, "d" = 2 }
我想要的是這個數組。
arr = ["b", "d", "a", "c"]
我
h.sort_by { |k, v| v}
h.keys
但返回按字母順序排列的按鍵。我能做些什麼來保持它們按排序哈希的順序?
我想創建一個有序哈希鍵的數組。我希望它們在數組和散列中以相同的順序列出。我有這個散列。如何將按鍵推送到未排序的陣列?
h = { "a" => 3, "b" => 1, "c" = 4, "d" = 2 }
我想要的是這個數組。
arr = ["b", "d", "a", "c"]
我
h.sort_by { |k, v| v}
h.keys
但返回按字母順序排列的按鍵。我能做些什麼來保持它們按排序哈希的順序?
h.sort_by{|k,v| v}
會給你[["b", 1], ["d", 2], ["a", 3], ["c", 4]]
,然後用.map
得到密鑰。
h.sort_by{|k,v| v}.map &:first
h = { "a" => 3, "b" => 1, "c" => 4, "d" => 2 }
p h.sort_by(&:last).map(&:first) #=> ["b", "d", "a", "c"]
這很有趣。在枚舉散列的元素之前,我沒有意識到枚舉器傳遞一個數組''k,v]到塊中,所以'{| k,v | ...'這只是正常的消歧爲陣列。我看到'k,v = hash.first'的工作原理是一樣的。 –
你可以試試這個也
h = { "a" => 3, "b" => 1, "c" => 4, "d" => 2 }
Hash[h.sort_by{|k,v| v}].keys
#=> ["b", "d", "a", "c"]
是我們處理什麼平臺,在這裏? – hd1
哦,對不起!紅寶石。 – caesura
你的問題不清楚。是不是哈希'[「a」,「b」,「c」,「d」]'中的鍵的順序?什麼給了'[「b」,「d」,「a」,「c」]命令?不要期望其他人在各行之間閱讀。用你自己的話表達出來。 – sawa