Ruby 哈希转置
我有以下 ruby 哈希:
h = { i1: { q1: 1, q2:2 }, i2: { q1: 3, q2: 4} }
我想将其转置如下:
{ q1: { i1: 1, i2: 3 }, q2: { i1: 2, i2: 4 } }
现在,我想出了一个可以完成我想要的功能的函数, 但我想知道是否有更简洁/优雅的方式来完成同样的事情?
我的解决方案:
ht = Hash.new{ |h,k| h[k] = {} }
h.each_pair do |k,ih|
ih.each_pair{ |ik, iv| ht[ik][k] = iv }
end
I have the following ruby hash:
h = { i1: { q1: 1, q2:2 }, i2: { q1: 3, q2: 4} }
and I want to transpose it as follows:
{ q1: { i1: 1, i2: 3 }, q2: { i1: 2, i2: 4 } }
Now, I came up with a function that does what I want,
but I wonder if there is a more succinct/elegant way for the same thing?
My solution:
ht = Hash.new{ |h,k| h[k] = {} }
h.each_pair do |k,ih|
ih.each_pair{ |ik, iv| ht[ik][k] = iv }
end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你更喜欢
inject
,你可以将其写为If you prefer
inject
, you can write it as