我尝试用Python将数据追加到一个复杂的字典中。
结构是给定的,我不能改变这一点。
示例代码:
class AutoVivification(dict):
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
class Command(BaseCommand):
def vorgang(self, lead):
payload = AutoVivification()
payload['antragsteller1'] = {
'personendaten': {
'anrede': lead.salutation,
'vorname': lead.firstname,
'nachname': lead.lastname,
'email': lead.email,
'telefonPrivat': lead.phone,
'geburtsdatum': str(lead.birthdate)
},
'wohnsituation': {
'anschrift': {
'strasse': lead.address,
'plz': lead.zip,
'ort': lead.city
}
},
'beschaeftigung': {
'beschaeftigungsart': lead.employment
}
}
if lead.employment == 'ARBEITER':
payload['antragsteller1']['beschaeftigung']['arbeiter']['beschaeftigungsverhaeltnis']['nettoeinkommenMonatlich'] = str(lead.income)
elif lead.employment == 'ANGESTELLTER':
payload['antragsteller1']['beschaeftigung']['angestellter']['beschaeftigungsverhaeltnis']['nettoeinkommenMonatlich'] = str(lead.income)
elif lead.employment == 'ARBEITSLOSER':
payload['antragsteller1']['beschaeftigung']['arbeitsloser']['sonstigesEinkommenMonatlich'] = str(lead.income)错误:
KeyError: 'angestellter'为什么不能在第二个elif语句中附加'angestellter‘?
这怎么可能呢?
发布于 2020-04-16 05:01:26
payload['antragsteller1']['beschaeftigung']['angestellter']['beschaeftigungsverhaeltnis']['nettoeinkommenMonatlich'] = str(lead.income)这句话实际上是:
some_dict = payload['antragsteller1']['beschaeftigung']['angestellter']['beschaeftigungsverhaeltnis']
some_dict['nettoeinkommenMonatlich'] = str(lead.income)因此,在设置最后一个值之前,您将检索不存在的现有键-值对。
https://stackoverflow.com/questions/61238418
复制相似问题