Pythonの辞書型には、他の辞書やキー/バリューのペアの反復可能なオブジェクトから要素を更新するためのupdate()
メソッドがあります。しかし、このメソッドは値を返さず(Noneを返す)、辞書自体を更新します。
a_dict = dict(k=4, z=2)
a_dict.update(dict(l=1))
print(a_dict) # {'k': 4, 'z': 2, 'l': 1}
この挙動はPythonの標準ライブラリの規約に基づいています。つまり、関数やメソッドがその引数やオブジェクトを「インプレース」で変更する場合、それらはNoneを返すようになっています。
しかし、元の辞書を変更せずに更新されたバージョンの辞書を返したい場合は、以下のようにすることができます:
original_dict = {'a': 'b', 'c': 'd'}
new_dict = dict(original_dict.items() + {'c': 'f', 'g': 'h'}.items())
print(new_dict) # {'a': 'b', 'c': 'f', 'g': 'h'}
print(original_dict) # {'a': 'b', 'c': 'd'}
このように、Pythonのdict.update()
メソッドは、その挙動と使用方法を理解することで、Pythonプログラミングにおける辞書の操作をより効果的に行うことができます。