5 ms·
{1: ["A", "B"]}?
by mctx 13y ago
{1: ["A", "B"]}?
- cuttle 13y agoVery little code that expects "A" or "B" would be equipped to handle ["A","B"].
- dalke 13y agoOkay, then what about {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."
- aiiane 13y agoHow does {1:"A"}+{} = {1:"A"} imply that {} is no longer a zero value? 1+0=1 makes total sense...
- dalke 13y agoIt's not just that one expression, but when done in addition to the previous suggested answer. That is, what is the type of the values in the summed dictionaries? 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.
- anamexis 13y agoIn the comment above, the hypothetical result is {1:["A"]}, not {1:"A"}. (The value is in a list.)
- einhverfr 13y agoThis could be interesting. One would have to define what hash math should mean. Personally, I would expect (based on my naive assumptions here) that: {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).