私はPythonで2枚のdicts持っていると仮定します。「」同じままですが、「B」と「C」ように、私はdefaults
からデフォルト値を使用してmydict
を拡張できるようにしたい別のdictを使ってPython dictに複数のデフォルトを設定する方法はありますか?
mydict = { 'a': 0 }
defaults = {
'a': 5,
'b': 10,
'c': 15
}
を私はdict.setdefault()
とdict.update()
について知っていますが、それぞれが私が欲しいものの半分しかしません - dict.setdefault()
で、私は各変数をループする必要がありますdefaults
; dict.update()
の場合、defaults
は、既存の値をmydict
に吹き飛ばします。
これを行うことができるPythonに組み込まれている機能がありますか?そうでない場合、繰り返しこれよりdict.setdefaults()
を呼び出すにループを書くよりPython的な方法があります:
for key in defaults.keys():
mydict.setdefault(key, defaults[key])
コンテキスト:私はXMLツリーを解析する方法を制御Pythonでいくつかのデータを書いています。各ノード(つまり、各ノードをどのように処理するか)には記述がありますが、私が書き込むデータはむしろスパースであるが、デフォルトで埋めています。サンプルコードは単なる例です...実際のコードは、デフォルトのdictにもっと多くのキーと値のペアを持っています。
(私はこの全体の問題があるが、マイナーな屁理屈が、それは私を悩まれていますので、私は認識していないよ、この操作を行うには良い方法があった場合、私は思っていた実現しています。)
ええ、これは私が通常やっていることです。 – Macke
私はこれについて考えましたが、デフォルト全体がかなり非効率的にコピーされませんでした(特にmydictはすべての値が最初に設定されています)。あなたは新しいdictを作成し、別のものからすべての値をコピーし、その場合にはdict全体を再度書き直します。 –
@Daniel Lew:値はコピーされず、参照のみがコピーされます。新しいdictは、メモリ内の同じ値への新しい参照を持ちます。 – nosklo