开发者

Setting a value to a dictionary's dictionary value

开发者 https://www.devze.com 2023-04-09 09:13 出处:网络
The code: >>> mydict = {} >>> keylist = [\'a\',\'b\',\'c\'] >>> mydict=dict.fromkeys(keylist,{})

The code:

>>> mydict = {}
>>> keylist = ['a','b','c']
>>> mydict=dict.fromkeys(keylist,{})
>>> mydict['a']['sample'] = 1
>>> mydict
{'a': {'sample': 1}, 'c': {'sample': 1}, 'b': {'sample': 1}}

I was expecting 开发者_JS百科mydict['a']['sample'] = 1 would set the value just for a's dictionary value and would get this: {'a': {'sample': 1}, 'c': {}, 'b': {}}.

What am I missing here? What should I have to do to get the expected output?


The problem is that you added the same dictionary to mydict for every key. You want to add different dictionaries, like so:

mydict = dict((key, {}) for key in keylist)

In the above code, you create a new dictionary to pair with each key. In your original code, the function fromkeys took the argument (the empty dictionary you provided) and added that exact argument - that single empty dictionary you created to pass in to the function - to each of the keys. When that one dictionary was changed, then, that change showed up everywhere.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号