将 2 d 哈希转换为 1 d 哈希

发布于 2024-11-05 21:55:25 字数 360 浏览 0 评论 0原文

有了这个哈希:

{ "blog_namespace" : { "key" : "blog_post_1234",
                       "notice" : "Read the new blog post!" } }

将其转换为哈希的最快方法是什么:

{ "blog_post_1234" : "Read the new blog post!" }

我总是看到人们使用 mapmerge 等的巧妙组合,但无法完全理解在不将两个循环嵌套在一起的情况下执行此操作的方法。

With this Hash:

{ "blog_namespace" : { "key" : "blog_post_1234",
                       "notice" : "Read the new blog post!" } }

What's the quickest way to translate it into the Hash:

{ "blog_post_1234" : "Read the new blog post!" }

?

I always see people using clever combinations of map and merge etc, but can't quite get my head around a way to do this without nesting two loops together.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌无敌 2024-11-12 21:55:25

这些哈希值似乎是 JSON 对象。如果是,请使用 JSON 解析器 将它们转换为 ruby​​ 哈希值。

hash = {"blog_namespace" => {"key" => "blog_post_1234",
                             "notice" => "Read the new blog post!"}}

Hash[hash.map {|k, v| [v["key"], v["notice"]] }]
# => {"blog_post_1234" => "Read the new blog post!"}

These hashes appear to be JSON objects. If they are, use a JSON parser to transform them into ruby hashes.

hash = {"blog_namespace" => {"key" => "blog_post_1234",
                             "notice" => "Read the new blog post!"}}

Hash[hash.map {|k, v| [v["key"], v["notice"]] }]
# => {"blog_post_1234" => "Read the new blog post!"}
非要怀念 2024-11-12 21:55:25

这不是有效的 Ruby 哈希值。但假设它是(或者您将其解析为一个)并且密钥始终是“blog_namespace”,您可以执行以下操作:

>> Hash[[h["blog_namespace"].values]] 
#=> {"blog_post_1234"=>"Read the new blog post!"}

This wasn't a valid Ruby hash. But given the assumptions that it is (or you'll parse it into one) and that the key will always be "blog_namespace", you can do the following:

>> Hash[[h["blog_namespace"].values]] 
#=> {"blog_post_1234"=>"Read the new blog post!"}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文