获取嵌套字典的所有键

新手上路,请多包涵

我有下面的代码,目前只打印初始字典的值。但是,我想遍历嵌套字典的每个键,最初只打印名称。请在下面查看我的代码:

 Liverpool = {
    'Keepers':{'Loris Karius':1,'Simon Mignolet':2,'Alex Manninger':3},
    'Defenders':{'Nathaniel Clyne':3,'Dejan Lovren':4,'Joel Matip':5,'Alberto Moreno':6,'Ragnar Klavan':7,'Joe Gomez':8,'Mamadou Sakho':9}
}

for k,v in Liverpool.items():
    if k =='Defenders':
       print(v)

原文由 Krishn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 853
2 个回答

这是打印所有团队成员的代码:

 for k, v in Liverpool.items():
    for k1, v1 in v.items():
        print(k1)

所以你只需一个一个地迭代每个内部字典并打印值。

原文由 Nikolay Zinov 发布,翻译遵循 CC BY-SA 4.0 许可协议

在其他答案中,您被指出如何解决给定指令的任务,最大深度级别等于二。这是一个程序,它允许您循环遍历具有无限嵌套级别的字典的键值对(更通用的方法):

 def recursive_items(dictionary):
    for key, value in dictionary.items():
        if type(value) is dict:
            yield from recursive_items(value)
        else:
            yield (key, value)

a = {'a': {1: {1: 2, 3: 4}, 2: {5: 6}}}

for key, value in recursive_items(a):
    print(key, value)

印刷

1 2
3 4
5 6


如果您只对最深层次的键值对感兴趣(当值不是字典时),这就是相关的。如果您也对值是字典的键值对感兴趣,请进行小编辑:

 def recursive_items(dictionary):
    for key, value in dictionary.items():
        if type(value) is dict:
            yield (key, value)
            yield from recursive_items(value)
        else:
            yield (key, value)

a = {'a': {1: {1: 2, 3: 4}, 2: {5: 6}}}

for key, value in recursive_items(a):
    print(key, value)

印刷

a {1: {1: 2, 3: 4}, 2: {5: 6}}
1 {1: 2, 3: 4}
1 2
3 4
2 {5: 6}
5 6

原文由 Dmitry Torba 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题