"Mark", :record=>"some text"}] [2, {:cli-6ren">
gpt4 book ai didi

ruby - 按键值之一排序散列

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:17 24 4
gpt4 key购买 nike

我的 @hash 看起来像这样:

[1, {:clid=>1, :nvz=>4, :tip=>"IP", :name=>"Mark", :record=>"some text"}] 
[2, {:clid=>2, :nvz=>-5, :tip=>"AO", :name=>"Tom", :record=>"another text"}]
[3, {:clid=>3, :nvz=>0, :tip=>"AO", :name=>"Pit", :record=>"another text"}]

我怎样才能对这个散列进行排序,以便迭代将按 :nvz 排序,看起来像这样:

[2, {:clid=>2, :nvz=>-5, :tip=>"AO", :name=>"Tom", :record=>"another text"}] 
[3, {:clid=>3, :nvz=>0, :tip=>"AO", :name=>"Pit", :record=>"another text"}]
[1, {:clid=>1, :nvz=>4, :tip=>"IP", :name=>"Mark", :record=>"some text"}]

最佳答案

据我了解,原始哈希看起来像这样?

{
1 => {:clid=>1, :nvz=>4, :tip=>"IP", :name=>"Mark", :record=>"some text"},
2 => {:clid=>2, :nvz=>-5, :tip=>"AO", :name=>"Tom", :record=>"another text"},
3 => {:clid=>3, :nvz=>0, :tip=>"AO", :name=>"Pit", :record=>"another text"}
}

如果为真,试试这个

@hash.sort_by{ |k,v| v[:nvz] }

附言

至于你的原始散列有 NON INTEGER nvz ('n') 所以你应该把它转换成整数:

@hash.sort_by{ |k,v| v[:nvz].to_i }

PPS

如果您需要将 n 排序为 999:

@hash.sort_by{ |k,v| v[:nvz] == 'n' ? 999 : v[:nvz] }

关于ruby - 按键值之一排序散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9920765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com