Python 从已知变量在列表中创建字典
我有一些已知的值/变量a、b、c、d 我想使用这些变量在列表中创建一个字典。我做了以下操作,但不起作用:Python 从已知变量在列表中创建字典,python,list,dictionary,nested-lists,Python,List,Dictionary,Nested Lists,我有一些已知的值/变量a、b、c、d 我想使用这些变量在列表中创建一个字典。我做了以下操作,但不起作用: nestedlist['Name'] = a nestedlist['Address']['StreetNumber'] = b nestedlist['Address']['Zipcode']=c nestedlist['Email']=d 我得到以下错误: Traceback (most recent call last): nestedlist['Address']['Str
nestedlist['Name'] = a
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
nestedlist['Email']=d
我得到以下错误:
Traceback (most recent call last):
nestedlist['Address']['StreetNumber'] = b
KeyError: 'Address'
我在这里遗漏了什么?在您这样做之前:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
执行此操作以创建具有密钥地址的字典
之后,您可以添加键、值:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
你必须创建dict
然后你可以分配地址
您正在尝试将b分配到地址的街道号码键
但地址不存在,因此它提供了KeyError使用:
所有字典中的第一个不是列表,因为如果它是一个列表,您将得到一个索引器。字典只需创建一个带有赋值的键,如下所示:
>>> d={}
>>> d['a']=2
>>> d
{'a': 2}
对于createnesteddictionary,到目前为止,前面键的值应该定义为dictionary
>>> d['b']={}
>>> d['b']['c']=6
>>> d
{'a': 2, 'b': {'c': 6}}
除了建议使用defaultdict和setdefault的其他答案外,您还可以使用以下内容创建嵌套字典:
你是说字典吗?为什么不直接使用defaultdict呢?是的,defaultdict是更好的选择。
from collections import defaultdict
blah = defaultdict(dict)
blah['Address']['Zipcode']=c
>>> d={}
>>> d['a']=2
>>> d
{'a': 2}
>>> d['b']={}
>>> d['b']['c']=6
>>> d
{'a': 2, 'b': {'c': 6}}
>>> d={i:j if i!='b' else {'c':j} for i,j in [('b',4),('a',1),('d',3)]}
>>> d
{'a': 1, 'b': {'c': 4}, 'd': 3}