我有以下Ruby散列
a = {
7 => [1469, 2283],
5 => [1469, 5464],
3 => [7561],
6 => [7952, 8114],
4 => []
}
并希望获得将数字显示为值的键
b = {
1469 => [7,5],
2283 => [7],
5464 => [5]
...
}
我该怎么做呢?我相信有一些超级巧妙的方法可以完成这件事.
我有以下Ruby散列
a = {
7 => [1469, 2283],
5 => [1469, 5464],
3 => [7561],
6 => [7952, 8114],
4 => []
}
并希望获得将数字显示为值的键
b = {
1469 => [7,5],
2283 => [7],
5464 => [5]
...
}
我该怎么做呢?我相信有一些超级巧妙的方法可以完成这件事.
已给予:
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]}