当值为数组时,按值对哈希进行排序



我有一个哈希:

hash = {"key1" => [1, a], "key2" => [3, c], "key3" => [2, b]}

我需要按值的第二个元素对哈希进行排序,如下所示:

hash = {"key1" => [1, a], "key3" => [2, b], "key2" => [3, c]}

我该怎么做?

试试这个

hash.sort_by { |_k, v| v.last }.to_h

这里首先要注意的是,从 Ruby 1.9 开始,Ruby 哈希实际上是有序的(docs)。

要回答您的问题,您可以使用如下Enumerable#sort_by

hash.sort_by{ |k, v| v[1] }.to_h

这将按每个值数组的第二个成员进行排序,并将其作为对数组返回。然后它将该对数组转换回哈希(带有 to_h

最新更新