根据已知变量在列表中创建字典
Creating a dictionary in a list from known variables
我有一些已知的 values/variables 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']['StreetNumber'] = b
KeyError: 'Address'
我在这里错过了什么?
在你做之前:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
执行此操作以使用键 Address
创建字典
nestedlist.setdefault("Address", dict())
# http://code.activestate.com/recipes/66516-add-an-entry-to-a-dictionary-unless-the-entry-is-a/
之后你可以添加键,值:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
您必须创建 dict
,
nestedlist = {"name":None, "Address": {}, "Email": None}
然后你可以赋值Address
您正在尝试将 b
分配给 Address
的 StreetNumber
键。
但是 Address
不存在,所以它给出 KeyError
使用 defaultdict:
from collections import defaultdict
blah = defaultdict(dict)
blah['Address']['Zipcode']=c
首先它的字典没有列出,因为如果它是一个列表,你会得到一个 IndexError
.dictionary 只需创建一个键,赋值如下:
>>> d={}
>>> d['a']=2
>>> d
{'a': 2}
并且对于创建嵌套字典,前面键的值应该被定义为一个字典!
>>> d['b']={}
>>> d['b']['c']=6
>>> d
{'a': 2, 'b': {'c': 6}}
除了建议 defaultdict
和 setdefault
的其他答案之外,您还可以使用 dict comprehension :
创建一个嵌套字典
>>> 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}
我有一些已知的 values/variables 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']['StreetNumber'] = b
KeyError: 'Address'
我在这里错过了什么?
在你做之前:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
执行此操作以使用键 Address
nestedlist.setdefault("Address", dict())
# http://code.activestate.com/recipes/66516-add-an-entry-to-a-dictionary-unless-the-entry-is-a/
之后你可以添加键,值:
nestedlist['Address']['StreetNumber'] = b
nestedlist['Address']['Zipcode']=c
您必须创建 dict
,
nestedlist = {"name":None, "Address": {}, "Email": None}
然后你可以赋值Address
您正在尝试将 b
分配给 Address
的 StreetNumber
键。
但是 Address
不存在,所以它给出 KeyError
使用 defaultdict:
from collections import defaultdict
blah = defaultdict(dict)
blah['Address']['Zipcode']=c
首先它的字典没有列出,因为如果它是一个列表,你会得到一个 IndexError
.dictionary 只需创建一个键,赋值如下:
>>> d={}
>>> d['a']=2
>>> d
{'a': 2}
并且对于创建嵌套字典,前面键的值应该被定义为一个字典!
>>> d['b']={}
>>> d['b']['c']=6
>>> d
{'a': 2, 'b': {'c': 6}}
除了建议 defaultdict
和 setdefault
的其他答案之外,您还可以使用 dict comprehension :
>>> 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}