{1: "A"} + {}
Should that return {1: ["A"]}? In which case {} is no longer a zero value.What about
{1: "A"} + {} + {1: "B", 2: "Z"} + {1: "C"} + {}
In any case, your suggestion would break all existing code. Based on all the StackOverflow and python-list questions, most people expect one or the other value, and few want the two-element list containing both. (And why a list instead of a tuple?)Guido chose the current behavior because there is no clear-cut winner. "Refuse the temptation to guess."
If {1:"A"}+{} == {1:"A"} then the type of each value is unchanged from the input list.
If {1:"A"}+{1:"B"} == {1:["A","B"]} then the type of each value (or at least each shared value) is a 2-element list.
If both are true, then no one can write sane code which knows how deal with the sum of two dictionaries.
That is, the insane code has to have checks for if one of the dictionaries is empty, and if so, do one thing, otherwise do another thing. In which case, why is this definition useful?
Therefore, either {} is the zero value, or dictionary summation produces lists for the resulting values, but not both.
{1: "A"} + {} == {1: "A"}
but {1: "A"} + {} + {1: "B", 2: "Z"} + {1: "C"} + {}
should reduce to: {1: ("A" + "B" + "C"), 2: "Z"}
Whether you can add "A", "B", and "C" would depend on string functions (could be "ABC" or raise an exception that these cannot be added for example).