首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby :从散列数组生成散列的散列

Ruby :从散列数组生成散列的散列
EN

Stack Overflow用户
提问于 2012-06-27 23:38:42
回答 5查看 170关注 0票数 1

我有以下几点

代码语言:javascript
复制
friends = [{ name: "Jack", attr1:"def", attr2:"def" }, { name: "Jill", attr1:"def", attr2:"def" }]

我想将上面的表示形式转换为散列形式,如下所示

代码语言:javascript
复制
friends = { "Jack" => { attr1: "def", attr2:"def" }, "Jill" => { attr1: "def", attr2: "def" } }

在Ruby中有什么优雅的方式做到这一点吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-27 23:42:17

代码语言:javascript
复制
Hash[friends.map { |f| _f = f.dup; [_f.delete(:name), _f] }]
# => {"Jack"=>{:attr1=>"def", :attr2=>"def"}, "Jill"=>{:attr1=>"def", :attr2=>"def"}}
票数 6
EN

Stack Overflow用户

发布于 2012-06-27 23:44:09

代码语言:javascript
复制
friends.each_with_object({}) do |f, o|
    f = f.dup
    o[f.delete :name] = f
end
票数 3
EN

Stack Overflow用户

发布于 2012-06-27 23:45:53

代码语言:javascript
复制
hash = {}
friends.each{|h| hash[h.delete(:name)] = h }
# => {"Jack"=>{:attr1=>"def", :attr2=>"def"}, "Jill"=>{:attr1=>"def", :attr2=>"def"}}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11230022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档