Why Does Dict(k=4, Z=2).update(dict(l=1)) Return None In Python?
Why does dict(k=4, z=2).update(dict(l=1)) return None? It seems as if it should return dict(k=4, z=2, l=1)? I'm using Python 2.7 should that matter.
Solution 1:
The .update()
method alters the dictionary in place and returns None
. The dictionary itself is altered, no altered dictionary needs to be returned.
Assign the dictionary first:
a_dict = dict(k=4, z=2)
a_dict.update(dict(l=1))
print a_dict
This is clearly documented, see the dict.update()
method documentation:
Update the dictionary with the key/value pairs from other, overwriting existing keys. Return
None
.
Solution 2:
dict.update()
method does update in place. It does not return the modified dict, but None
.
The doc says it in first line:
Update the dictionary with the key/value pairs from other, overwriting existing keys. Return None.
Solution 3:
For completion's sake, if you do want to return a modified version of the dictionary, without modifying the original you can do it like this:
original_dict = {'a': 'b', 'c': 'd'}
new_dict = dict(original_dict.items() + {'c': 'f', 'g': 'h'}.items())
Which gives you the following:
new_dict == {'a': 'b', 'c': 'f', 'g': 'h'}
original_dict == {'a': 'b', 'c': 'd'}
Post a Comment for "Why Does Dict(k=4, Z=2).update(dict(l=1)) Return None In Python?"