我有这个数组:
data = [
['Frank', 33],
['Stacy', 15],
['Juan', 24],
['Dom', 32],
['Steve', 24],
['Jill', 24]
]
我把它变成了一个散列,这样我就可以按键和值来组织它,这样它们就更容易单独调用。最终给了我这个
{"Frank"=>33, "Stacy"=>15, "Juan"=>24, "Dom"=>32, "Steve"=>24, "Jill"=>24}
我知道为了只看到我需要执行 data.keys
的键,并且通过执行 data.keys.sort
我可以按字母顺序获得键。
我假设我需要做一些像 data.keys.sort_by { |key, value| value }
但每当我运行它时,我都会收到原始顺序的散列键。
最佳答案
你不能改变散列的顺序,但你可以在把它变成散列之前对数组进行排序:
data = [
['Frank', 33],
['Stacy', 15],
['Juan', 24],
['Dom', 32],
['Steve', 24],
['Jill', 24]
]
hash = data.sort_by(&:last).to_h
# => { "Stacy" => 15,
# "Juan" => 24,
# "Steve" => 24,
# "Jill" => 24,
# "Dom" => 32,
# "Frank" => 33 }
如果你已经有一个散列,那么你必须把它变成一个数组,然后对它进行排序,然后再把它转回散列,例如hash.to_a.sort_by(&:last).to_h
.
关于arrays - 如何根据 ruby 2.3.0 中的值对哈希键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191001/