{"z"=>5, "y"=>3, "x"=>88}, "b"=>{"a"=>2, "d"=>-5}} 运行以下命令时: @foo-6ren">
gpt4 book ai didi

ruby - 按值对嵌套哈希中的项目进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:03 25 4
gpt4 key购买 nike

我收到了一个嵌套散列,需要按其值排序。例如:

@foo = {"a"=>{"z"=>5, "y"=>3, "x"=>88}, "b"=>{"a"=>2, "d"=>-5}}

运行以下命令时:

@foo["a"].sort{|a,b| a[1]<=>b[1]}

我得到:

[["y", 3], ["z", 5], ["x", 88]]

太棒了,这正是我想要的。问题是我并不总是知道发送给我的所有 key 是什么,所以我需要某种循环。我尝试执行以下操作:

@foo.each do |e|   
e.sort{|a,b| a[1]<=>b[1]}
end

这对我来说很有意义,因为如果我手动调用 @foo.first[0] 我会得到

"a"

@foo.first[1] 返回

{"z"=>5, "y"=>3, "x"=>8}

但出于某种原因,这没有正确排序(例如根本没有)。我假设这是因为 each 正在对整个哈希对象而不是“a”的值调用排序。如何在不知道其键是什么的情况下访问嵌套哈希的值?

最佳答案

你可能想像这样遍历散列:

@foo.each do |key, value|  @foo[key] = value.sort{ |a,b| a[1]<=>b[1] }end

关于ruby - 按值对嵌套哈希中的项目进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924633/

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