谈到阵列​​的散列成哈希值的Ruby中的数组 [英] Turning a Hash of Arrays into an Array of Hashes in Ruby

查看:113
本文介绍了谈到阵列​​的散列成哈希值的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆