Python言語の標準dictクラスが '+'や '+ ='などの加算/減算演算子をサポートしていない理由について戸惑っています。Python辞書が '+'演算子をサポートしない理由
>>> foo = {'a': 1, 'b': 2}
>>> bar = {'c': 3, 'd': 4}
>>> foo + bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
私の希望的観測ではなく、以下の結果を次のようになります。
>>> foo + bar
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
同様に、なぜself.__update__(other)
と同じではない__radd__(self, other)
結果のでしょうか?
>>> foo += bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'dict' and 'dict'
既定の動作の歴史的な理由を知っている人はいますか?
(私はfoo
とbar
が同じキーが異なるキー値を持つシナリオで使用されるべき値で曖昧なことができることを認める)
あなたのかっこの譲歩は、あなたの質問に対するかなり良い答えだと思います。 '+'はあいまいな瞳孔を表現するための誤った方法になります。 – khelwood
出力が些細なものではなかったためです。両方の辞書が同じキーを持っているとどうなりますか?例外?値は最初の辞書から取られますか?多分二番目から?明確に定義されていないため、実装されていません。 – DeepSpace
[こちらをご覧ください] – Sevanteri