他の人が、述べたようにa.update(b)
、いくつかのdictsのためにa
とb
、あなたの質問にを求めてきた結果を実現します。ただし、extend
マッピング/セットオブジェクトのメソッドが構文a.extend(b)
でa
の値をの値で上書きしないことを望んでいることを何度も見たことがあることを指摘したいと思いb
ます。a.update(b)
はa
値を上書きするため、には適していませんextend
。
一部の言語では、このメソッドdefaults
またはを呼び出します。これinject
は、既存の値を上書きせずにbの値(デフォルト値のセットである場合があります)をディクショナリに注入する方法と考えることができるためです。
もちろん、a.extend(b)
とほぼ同じように簡単にメモできますb.update(a); a=b
。割り当てを削除するには、次のようにします。
def extend(a,b):
"""Create a new dictionary with a's properties extended by b,
without overwriting.
>>> extend({'a':1,'b':2},{'b':3,'c':4})
{'a': 1, 'c': 4, 'b': 2}
"""
return dict(b,**a)
の副作用のないdict
コンストラクターを使用したスマートなアイデアを提供してくれたTom Leysに感謝しextend
ます。