如何使用嵌套哈希获取多个哈希键?

时间:2011-09-09 17:50:03

标签: ruby hash

我正在玩嵌套哈希,我正试图找出当哈希是嵌套哈希时如何获取多个键:

imahash = { :id => { :name => "Alma", :email => "alma@mail.com" },
            :stats => { :gender => "Female" }, 
            :location => { :city => "Freeport", :state => "Maine" } 
          }

我知道如何检索嵌套值,输入哈希名称将转储所有键和值。但我想要做的是获取特定的密钥,例如:name和:gender only。或者:名称和:仅限城市。

这可能吗?因为根据我的发现,您似乎只能一次检索一个键的哈希值或一次检索所有键的哈希值。

我想要的输出类似于:

=> { :id => { :name => "Alma" }, :location => { :city => "Freeport" } }

2 个答案:

答案 0 :(得分:0)

我认为你想要在元组中获取值?您可以创建一个包含所需值集合的数组。

请尝试以下名称和城市:

[imahash[:id][:name], imahash[:location][:city]]
=> ["Alma", "Freeport"]

答案 1 :(得分:0)

不完全确定你在这里问的是什么,但似乎你想从更大的那个创建一个新的哈希。

要获取特定键,例如:name和:仅限性别

name_and_gender_hash = {
  :name   => imahash[:id][:name],
  :gender => imahash[:stats][:gender]
}

会导致

{:name => "Alma", :gender => "female"}