2 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
'd' 不包含d["English"]您嘗試創(chuàng)建的內(nèi)容d[language][id] = {'name': name, 'description': description}- 因此出現(xiàn)錯誤。
如果它們不存在,您不能“即時”創(chuàng)建中間字典 - 檢查它們是否已經(jīng)存在,如果沒有創(chuàng)建它們 - 或者使用dict.setdefault(key,default)創(chuàng)建條目,如果它還不存在:
items = [{'id': 1, 'language': 'English', 'name': 'Sarah', 'description': 'Blah blah'},
{'id': 2, 'language': 'English', 'name': 'Jessica', 'description': 'More blah'}]
d = {}
for item in items:
language = item['language']
idd = item['id']
name = item['name']
description = item['description']
d.setdefault(language,{})[idd] = {'name': name, 'description': description}
print(d)
輸出:
{'English': {1: {'name': 'Sarah', 'description': 'Blah blah'},
2: {'name': 'Jessica', 'description': 'More blah'}}}
collections.defaultdict如果您在使用時遇到性能問題,您也可以使用setdefault- 速度稍慢。

TA貢獻1815條經(jīng)驗 獲得超13個贊
d 最初是一個空字典,因此當(dāng)您嘗試為d[language][id].
您可以按如下方式更改代碼:
for item in items:
language = item['language']
id = item['id']
name = item['name']
description = item['description']
if not language in d:
d[language] = {}
d[language][id] = {'name': name, 'description': description}
添加回答
舉報