Python遍历列表中的嵌套字典或词典

时间:2018-10-17 15:29:34

标签: python-2.7 list loops dictionary

我需要处理一些数据。它看起来像一个字典中的一个字典,一个字典中的所有字典都存储在列表中!这是经过解析的JSON数据,因此我无法控制其格式。

以下是其中一些数据,由于不相关且简短起见,我删除了很多数据:

devices = [
    {
        'server.device.base.phyname': 'IEEE802.11', 
        'dot11.device': {
            'dot11.device.associated_client_map': {
              '68:96:1E:96:96:B5': '4202770DF206F63E_B5F4CE1EAB680000', 
              '60:30:CE:91:4A:96': '4202770DF206F63E_8D4A91D430600000', 
              '4C:32:75:66:96:10': '4202770DF206F63E_105F6675324C0000', 
              '50:6A:03:3E:0E:17': '4202770DF206F63E_170E3E036A500000', 
              '7C:C3:CE:A4:EC:86': '4202770DF206F63E_86ECA4A1C37C0000', 
              '2C:BE:08:F0:D5:A0': '4202770DF206F63E_A0D5F008BE2C0000', 
              '96:E7:96:76:9A:C7': '4202770DF206F63E_C79A762CE7700000', 
              '96:CE:75:57:E2:5A': '4202770DF206F63E_5AE2577510000000', 
              '34:68:95:96:3C:96': '4202770DF206F63E_C43C6A9568340000', 
              '6C:96:96:9D:CE:57': '4202770DF206F63E_57109DCF966C0000', 
              'CE:61:96:CE:B4:69': '4202770DF206F63E_69B4D2AE61900000', 
              '04:CE:CE:1C:CE:8C': '4202770DF206F63E_8CAF1CCE0C040000', 
              '2C:F0:CE:DC:D6:39': '4202770DF206F63E_39D6DCEEF02C0000'
            }
        }
    }
]

我需要能够提取存储在“ dot11.device”对中的MAC地址。到目前为止,我能够遍历父级列表并显示所有数据:

for d in devices:
    print d['dot11.device']['dot11.device.associated_client_map']

但是这会打印出整个嵌套的字典。

我真正想做的是返回一个仅包含MAC地址的新列表(它们是字典密钥吗?我不确定)。

我正在使用Python2,非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是的,它们确实是键,因此答案很简单:

for d in devices:
    print d['dot11.device']['dot11.device.associated_client_map'].keys()