首页 > 解决方案 > 在列表中迭代字典

问题描述

我在列表中迭代字典时遇到了一些麻烦。

我有一个看起来像这样的列表:

mylist[0]

{'_id': ObjectId('aleatoryID'),
 'created_at': datetime.datetime(2018, 3, 22, 11, 58, 23, 585000),
 'person': {'id': '00115500',
  'scores': {'SCORE_3': {'@score': '45'}, 'SCORE_1': 205, 'SCORE_2': 487}}}

遍历 SCORE_1 和 SCORE_2 很好,我的问题是 SCORE_3,因为它包含一个子结构。这是我的尝试:

persons = []
for document in mylist:
    persons.append((document['person'].get('id'),
                    document['created_at'],
                    document['person']['scores'].get('SCORE_1'),
                    document['person']['scores'].get('SCORE_2'),
                    document['person']['scores']['SCORE_3'].get('@score')
                   ))

KeyError: 'SCORE_3'

在这种情况下迭代字典的正确方法是什么?

标签: pythonpython-3.x

解决方案


根据您的示例,这应该有效:

document['person']['scores'].get('SCORE_3')['@score']

或者只是索引而不使用get

document['person']['scores']['SCORE_3']['@score']

推荐阅读