> An alternative to the + operator is the pipe | operator, which is used for set union. This suggestion did not receive much support on Python-Ideas.
That's disappointing. It's always been on my Python wish list that dicts would subclass sets, as dicts are essentially sets with values attached. Pretty much everywhere you can use a set you can use a dict and it acts like the set of its keys. For example:
>>> s = {'a','b','c'}
>>> d = {i: i.upper() for i in s}
>>> list(d) == list(s)
True
Dictionaries have been moving in this more ergonomic direction for a while. Originally, to union two dictionaries you had to say:
>>> d2 = {'d': 'D'}
>>>
>>> d3 = d.copy()
>>> d3.update(d2)
>>> d3
{'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}
Nowadays, as the PEP points out, you can just say:
>>> {**d, **d2}
{'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}
There's no reason you shouldn't have always been able to say d | d2, same as sets. Now I finally get my wish that dictionaries will behave more similarly to sets and they use the wrong set of operators.
That's disappointing. It's always been on my Python wish list that dicts would subclass sets, as dicts are essentially sets with values attached. Pretty much everywhere you can use a set you can use a dict and it acts like the set of its keys. For example:
Dictionaries have been moving in this more ergonomic direction for a while. Originally, to union two dictionaries you had to say: Nowadays, as the PEP points out, you can just say: There's no reason you shouldn't have always been able to say d | d2, same as sets. Now I finally get my wish that dictionaries will behave more similarly to sets and they use the wrong set of operators.