gpt4 book ai didi

ruby - 将数组转换为哈希

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:36 24 4
gpt4 key购买 nike

我尝试学习 map 和 group_by 但很难...

我的数组:

a = [ [1, 0, "a", "b"], [1, 1, "c", "d"], [2, 0, "e", "f"], [3, 1, "g", "h"] ]

预期结果:

b= {
1=> {0=>["a", "b"], 1=>["c", "d"]} ,
2=> {0=>["e", "f"]} ,
3=> {1=>["g", "h"]}
}

第一个值分组,第二个值可以是01

一个开始:

a.group_by{ |e| e.shift}.map { |k, v| {k=>v.group_by{ |e| e.shift}} }

=> [{1=>{0=>[["a", "b"]], 1=>[["c", "d"]]}},
{2=>{0=>[["e", "f"]]}}, {3=>{1=>[["g", "h"]]}}]

我想用前两个值得到“a”和“b”,这是我找到的唯一解决方案......(使用哈希的哈希)

最佳答案

不确定 group_by 是否是这里最简单的解决方案:

a = [ [1, 0, "a", "b"], [1, 1, "c", "d"], [2, 0, "e", "f"], [3, 1, "g", "h"] ]

result = a.inject({}) do |acc,(a,b,c,d)|
acc[a] ||= {}
acc[a][b] = [c,d]
acc
end

puts result.inspect

将打印:

{1=>{0=>["a", "b"], 1=>["c", "d"]}, 2=>{0=>["e", "f"]}, 3=>{1=>["g", "h"]}}

此外,请避免直接更改您正在操作的项目(shift 调用),您在代码中收到的集合可能不是您可以更改的。

关于ruby - 将数组转换为哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com