5

因此,使用普通哈希,您可以使用它来获取密钥:

hash.keys

如何获得如下所示的多维散列的第二维的键:

{"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user", 
"title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}}

<id>每个项目都是唯一的。

所以我从上面想要的键是:first_name, last_name, username, title, office and email

4

4 回答 4

4

你会做这样的事情:

hash["<id>"].keys
于 2013-02-25T22:38:24.620 回答
3

以下将为您提供二级哈希中使用的所有键。我已经使用过uniq,所以你不会得到重复。

hash.collect { |k, v| v.keys }.flatten.uniq
于 2013-02-25T22:40:03.843 回答
2

假设您有一个散列,其中包含一个未知键和一个值:散列。

h = {"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user", 
"title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}}

p h[h.keys.first].keys
#=> ["first_name", "last_name", "username", "title", "office", "email"]

(但每次我看到这样的结构时,我都想知道为什么它不是结构)。

于 2013-02-25T22:58:01.697 回答
2

我假设您的意思是在基本哈希中会有几个唯一的“id”键指向嵌套的哈希,每个嵌套的哈希都包含“first_name”、“last_name”等键。如果是这样的话:

hash.values.map(&:keys)

将返回一个数组数组,其中包含每个嵌套哈希的键。

另一方面,如果您只有一个键值对(如您的示例所示),您可以这样做

hash.values.first.keys

这将返回与孤立嵌套哈希中的键相对应的扁平键数组。

于 2013-02-26T07:12:23.160 回答