是否可以按子哈希值对多维哈希进行排序?

nip*_*ese 4 ruby hash

是否可以按子键的值对父哈希进行排序?

例如:

{
    :a => 
        {:order => 3},
    :b =>
        {:order => 1},
    :c =>
        {:order => 2}
}
Run Code Online (Sandbox Code Playgroud)

诉诸于

{
    :b => 
        {:order => 1},
    :c =>
        {:order => 2},
    :a =>
        {:order => 3}
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ger 5

您可以将其转换为成对数组,使用sort_by方法来定位要排序的值,然后将其转换回散列:

h = {
    :a => 
        {:order => 3},
    :b =>
        {:order => 1},
    :c =>
        {:order => 2}
}

h.sort_by {|k,v| v[:order]}.to_h
=> {:b=>{:order=>1}, :c=>{:order=>2}, :a=>{:order=>3}} 
Run Code Online (Sandbox Code Playgroud)