谈到阵列的散列成哈希值的Ruby中的数组 [英] Turning a Hash of Arrays into an Array of Hashes in Ruby
本文介绍了谈到阵列的散列成哈希值的Ruby中的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们有以下的数据结构:
We have the following datastructures:
{:a => ["val1", "val2"], :b => ["valb1", "valb2"], ...}
和我想将其转换成
[{:a => "val1", :b => "valb1"}, {:a => "val2", :b => "valb2"}, ...]
再放回第一种形式。有一个好看的实现任何人?
And then back into the first form. Anybody with a nice looking implementation?
推荐答案
该解决方案可与价值观的任意数目(VAL1,将val2 ... VALN):
This solution works with arbitrary numbers of values (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中的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文