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.