python生成嵌套字典键错误

use*_*933 3 python dictionary

我正在尝试从 mysql 查询创建嵌套字典,但出现关键错误

result = {}

for i, q in enumerate(query):

    result['data'][i]['firstName'] = q.first_name
    result['data'][i]['lastName'] = q.last_name
    result['data'][i]['email'] = q.email
Run Code Online (Sandbox Code Playgroud)

错误

KeyError: 'data'
Run Code Online (Sandbox Code Playgroud)

想要的结果

result = {
    'data': {
        0: {'firstName': ''...}
        1: {'firstName': ''...}
        2: {'firstName': ''...}
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*183 9

您想创建一个嵌套字典

result = {} 将为平面字典创建一个赋值,其项目可以有任何值,如“string”、“int”、“list”或“dict”

对于这个平面任务

python知道要做什么 result["first"]

如果您希望“第一”也成为另一本字典,您需要通过 assingment 告诉 Python result['first'] = {}

否则,Python 会引发 "KeyError"

我想你正在寻找这个:)

>>> from collections import defaultdict
>>> mydict = lambda: defaultdict(mydict)
>>> result = mydict()
>>> result['Python']['rules']['the world'] = "Yes I Agree"
>>> result['Python']['rules']['the world']
'Yes I Agree'
Run Code Online (Sandbox Code Playgroud)