
On Tue, Feb 17, 2015 at 2:22 PM, C Anthony Risinger <anthony@xtfx.me> wrote:
The premise taken here is that dicts ARE sets that simply happen to have values associated with them... hence all operations are against keys ONLY. The fact that values tag along is irrelevant.
but dicts DO have values, and that's their entire reason for existence -- if the values were irrelevant, you'd use a set.... And because values are important -- there is no such thing as "works the same as a set". For instance: # union (first key winning here... IIRC this is how sets actually work)
d1 | d2 {'a': 1, 'b': 2, 'c': 3, 'd': 5, 'e': 6}
The fact that sets may, under the hood, keep the first key is an implementation detail -- by definition the first and second duplicate keys are the same. So there is no guidance here whatsoever as to what to do with with unioning dicts. Oh, except .update() provides a precedent that has proven to be useful. Keeping the second value sure feels more natural to me. Oh, and I'd still prefer + I don't think most users think of merging two dicts together as a boolean logical operation.... All of the operations support arbitrary iterables as the RHS! This is NICE.
not so sure about that -- again, dicts have values, that's why we use them. Maybe defaultdict could work this way, though. -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chris.Barker@noaa.gov