Arrays 对散列值数组进行排序
我有一个散列,其中键是整数,值是字符串数组。然后我需要按字母顺序对数组中的项进行排序,并将排序后的数组作为新的哈希值返回 我认为类似于Arrays 对散列值数组进行排序,arrays,ruby,sorting,hash,Arrays,Ruby,Sorting,Hash,我有一个散列,其中键是整数,值是字符串数组。然后我需要按字母顺序对数组中的项进行排序,并将排序后的数组作为新的哈希值返回 我认为类似于hash.map{| k,v | v.sort}的东西会起作用,但是,不。为了更明确一点,我需要转向: hash = { 0 => ["c", "d", "b", "a"], 1 => ["e", "q", "x", "m"] } 进入: 试试这个 hash.each { |k,v| v.sort! } 这将对阵列进行排序。试试这个 hash.ea
hash.map{| k,v | v.sort}
的东西会起作用,但是,不。为了更明确一点,我需要转向:
hash = { 0 => ["c", "d", "b", "a"], 1 => ["e", "q", "x", "m"] }
进入:
试试这个
hash.each { |k,v| v.sort! }
这将对阵列进行排序。试试这个
hash.each { |k,v| v.sort! }
这将对阵列进行适当排序。这是一种方法:
hash.each_value { |v| v.sort! }
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
或者更简洁地说:
hash.each_value(&:sort!)
但是,如果希望保留原始哈希,请执行以下操作:
hash.map { |k,v| [k,v.sort] }.to_h
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
这是一种方式:
hash.each_value { |v| v.sort! }
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
或者更简洁地说:
hash.each_value(&:sort!)
但是,如果希望保留原始哈希,请执行以下操作:
hash.map { |k,v| [k,v.sort] }.to_h
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
这不会改变原始散列
hash.merge(hash) { |*,n| n.sort }
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
如果要修改原始散列,则替换为merge代码>(又名更新
)用于合并
它使用and的形式,并使用块来确定合并的两个哈希中存在的键的值,这里是原始哈希的所有键。有关详细信息,请参阅文档。这不会改变原始哈希
hash.merge(hash) { |*,n| n.sort }
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
如果要修改原始散列,则替换为merge代码>(又名更新
)用于合并
它使用and的形式,并使用块来确定合并的两个哈希中存在的键的值,这里是原始哈希的所有键。有关详细信息,请参阅文档。我已经尝试了每种方法,但我猜是最好的方法!这是重要的一点。谢谢。我已经试过了每种方法,但我猜是最好的方法!这是重要的一点。谢谢,很好。从不知道每个_值都有一个方法。将此更改为接受答案b/c彻底性#每个_值(&:sort!)可能是最简单的方法。谢谢,很好。从不知道每个_值都有一个方法。将此更改为接受答案b/c彻底性#每个_值(&:sort!)可能是最简单的方法。谢谢