无法从字典中访问值

时间:2016-07-17 07:41:07

标签: python dictionary

我有以下字典

Dict = {'Manu':{u'ID0020879.07': [{'ID': u'ID0020879.07', 'log': u'log-123-56', 'owner': [Manu], 'item': u'WRAITH', 'main_id': 5013L, 'status': u'noticed', 'serial': u'89980'}]}}

如何从此词典中访问序列? 我试过Dict['Manu']['serial'],但它没有按预期工作.. 伙计们有什么想法?

2 个答案:

答案 0 :(得分:2)

你的词典是非常嵌套的。就像这样。

In [1]: Dict['Manu']['ID0020879.07'][0]['serial']
Out[1]: u'89980'

答案 1 :(得分:1)

这是重组后的字典。

{
    'Manu': {
        u'ID0020879.07': [{
            'ID': u'ID0020879.07',
            'log': u'log-123-56',
            'owner': [Manu],
            'item': u'WRAITH',
            'main_id': 5013L,
            'status': u'noticed',
            'serial': u'89980'
        }]
    }
}

现在,您可以更清楚地看到序列密钥的位置(不在Manu下)......

而不是

Dict['Manu']['ID0020879.07'][0]['serial']

我建议您修复该数据源,使ID0020879.07成为数据的关键字(因为它在列表中该对象的ID键中重复)。

也许修复如此,Manu键映射到“帐户”列表,每个帐户都有ID和其他字段

{
    'Manu': [{
        'ID': u'ID0020879.07',
        'log': u'log-123-56',
        'owner': [Manu],
        'item': u 'WRAITH',
        'main_id': 5013L,
        'status': u'noticed',
        'serial': u'89980'
    }]
}

然后你可以做

Dict['Manu'][0]['serial']

或循环列表以获取所有序列密钥

for item in Dict['Manu']:
    print(item['serial'])