["valb1", "valb2"], ...} 我想把它变成 [{:a => "val1", :b => "val-6ren">
gpt4 book ai didi

ruby - 在 Ruby 中将数组哈希转换为哈希数组

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:15 24 4
gpt4 key购买 nike

我们有以下数据结构:

{:a => ["val1", "val2"], :b => ["valb1", "valb2"], ...}

我想把它变成

[{:a => "val1", :b => "valb1"}, {:a => "val2", :b => "valb2"}, ...]

然后回到第一种形式。有人有漂亮的实现吗?

最佳答案

此解决方案适用于任意数量的值(val1、val2...valN):

{:a => ["val1", "val2"], :b => ["valb1", "valb2"]}.inject([]){|a, (k,vs)| 
vs.each_with_index{|v,i| (a[i] ||= {})[k] = v}
a
}
# => [{:a=>"val1", :b=>"valb1"}, {:a=>"val2", :b=>"valb2"}]

[{:a=>"val1", :b=>"valb1"}, {:a=>"val2", :b=>"valb2"}].inject({}){|a, h|
h.each_pair{|k,v| (a[k] ||= []) << v}
a
}
# => {:a=>["val1", "val2"], :b=>["valb1", "valb2"]}

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

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