我有以下 Ruby 哈希
a = {
7 => [1469, 2283],
5 => [1469, 5464],
3 => [7561],
6 => [7952, 8114],
4 => []
}
并希望获取数字显示为值的键
b = {
1469 => [7,5],
2283 => [7],
5464 => [5]
...
}
我该怎么做?我确信有一些 super 巧妙的方法可以完成它。
最佳答案
给定:
a = {
7 => [1469, 2283],
5 => [1469, 5464],
3 => [7561],
6 => [7952, 8114],
4 => [1469, 2283],
2 => []
}
在b
中使用新数组的默认值:
b=Hash.new {|hsh, key| hsh[key] = [] }
a.each{|k,v| v.each{|n| b[n] << k} }
或使用 each_with_object 包含对象创建:
b=a.each_with_object(Hash.new {|h,k| h[k] = []}) { |(k,v), h|
v.each{ |e| h[e] << k } }
结果 b
是:
{1469=>[7, 5, 4], 2283=>[7, 4], 5464=>[5], 7561=>[3], 7952=>[6], 8114=>[6]}
关于ruby - 使用数组作为其中之一转换键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74707772/