One reason is that dict.keys() predates the introduction of sets into the language.
Note that the return type of dict.keys() has changed in Python 3: the function now returns a “set-like” view rather than a list.
For set-like views, all of the operations defined for the abstract base class
collections.abc.Setare available (for example,==,<, or^).