如何在Ruby中获得多维哈希中的密钥?
因此,对于普通散列,您可以使用它来获取密钥:如何在Ruby中获得多维哈希中的密钥?,ruby,hash,Ruby,Hash,因此,对于普通散列,您可以使用它来获取密钥: hash.keys 如何获取多维散列的第二维度的键,如下所示: {"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user", "title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}} {”“=>{“名字”=>“测
hash.keys
如何获取多维散列的第二维度的键,如下所示:
{"<id>"=>{"first_name"=>"test", "last_name"=>"test_l", "username"=>"test_user",
"title"=>"Sales Manager", "office"=>"test", "email"=>"test@test.com"}}
{”“=>{“名字”=>“测试”、“姓氏”=>“测试”、“用户名”=>“测试用户”,
“职务”=>“销售经理”、“办公室”=>“测试”、“电子邮件”=>”test@test.com"}}
对于每个项目都是唯一的
因此,我想从上面得到的关键是:
名字、姓氏、用户名、头衔、办公室和电子邮件
hash["<id>"].keys
hash[“”].密钥
以下内容将获得第二级哈希中使用的所有键。我使用了uniq
,这样您就不会得到重复的
hash.collect { |k, v| v.keys }.flatten.uniq
假设您有一个散列,其中有一个未知键和一个值:一个散列
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"]
h={”“=>{“名字”=>“测试”、“姓氏”=>“测试”、“用户名”=>“测试用户”,
“职务”=>“销售经理”、“办公室”=>“测试”、“电子邮件”=>”test@test.com"}}
p h[h.keys.first].keys
#=>[“名字”、“姓氏”、“用户名”、“头衔”、“办公室”、“电子邮件”]
(但每次我看到这样的构造时,我都想知道为什么它不是一个结构)。我假设您的意思是,在基本散列中会有几个唯一的“id”键,指向嵌套散列,每个散列都包含“first\u name”、“last\u name”等键。如果是这样的话:
hash.values.map(&:keys)
将返回一个数组数组,其中包含每个嵌套哈希的键
另一方面,如果只有一个键值对(如示例中所示),则可以这样做
hash.values.first.keys
它将返回一个与孤立嵌套散列中的键对应的平面数组。或hash.values.collect(&:keys).flatte.uniq
,这避免了阻塞。如果使用map
或collect
,习惯用法是使用{/code>和}
而不是do
和end
。当将方法链接到块的末尾时尤其如此。链接到end
尤其难看。hash[“”]。键
更正确。OP将键显示为文本字符串。