gpt4 book ai didi

ruby-on-rails - 使用以下结构在 ruby​​ 中将 Array 转换为 Hash

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:04 26 4
gpt4 key购买 nike

我有一个以下数组,显示用户信息和一些与用户相关的值。以下数组包含两个用户 Akiyo Riggs 和 Bingo 的信息

a1 = [["Akiyo Riggs", -32, "OverTime Hours", "",12],["Akiyo Riggs", -32, 
"Regular Hours", "", 18],["Bingo",-12,"OverTime Hours","",14], ["Bingo",
-12,"Regular Hours","",32]]

我如何转换成以下哈希数组,其中键是用户名,值是具有相应值的哈希

[{"Akiyo Riggs"=>{"OverTime Hours"=>["", 12], "Regular Hours"=>["", 18]},
{"Bingo"=>{"OverTime Hours"=>["", 14], "Regular Hours"=>["", 32]}]

最佳答案

a1.map { |x,_,p,*ps| {x => {p => ps} } }.reduce({}, :deep_merge)
# => {"Akiyo Riggs"=>{"OverTime Hours"=>["", 12], "Regular Hours"=>["", 18]},
# "Bingo"=>{"OverTime Hours"=>["", 14], "Regular Hours"=>["", 32]}}

注意:如果考虑效率,请考虑使用 deep_merge! 而不是 deep_merge,这样 reduce 就不会在每次迭代。

一些解释:

a1.map { |x,_,p,*ps| {x => {p => ps} } }

给我们一个像这样的散列数组

 [{"Akiyo Riggs"=>{"OverTime Hours"=>["", 12]}},
{"Akiyo Riggs"=>{"Regular Hours"=>["", 18]}},
{"Bingo"=>{"OverTime Hours"=>["", 14]}},
{"Bingo"=>{"Regular Hours"=>["", 32]}}]

我们可以递归地与 ActiveSupport 合并 Hash#deep_merge

关于ruby-on-rails - 使用以下结构在 ruby​​ 中将 Array 转换为 Hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357610/

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