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 shou
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.
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.
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'}