Kristian Klette schrieb am 23.07.19 um 22:59:
During the sprints after EuroPython, I made an attempt at adding support for comparing the results from `.values()` of two dicts.
Currently the following works as expected:
``` d = {'a': 1234}
d.keys() == d.keys() d.items() == d.items() ```
but `d.values() == d.values()` does not return the expected results. It always returns `False`. The symmetry is a bit off.
In the bug trackers[0] and the Github PR[1], I was asked to raise the issue on the python-dev mailing list to find a consensus on what comparing `.values()` should do.
I'd argue that Python should compare the values as expected here, or if we don't want to encourage that behaviour, maybe we should consider raising an exception. Returning just `False` seems a bit misleading.
What are your thoughts on the issue?
FWIW, after reading most of this thread, I do not like the idea of raising an exception for an innocent comparison. Just think of a list of arbitrary objects, including a dict values view for some reason, and you're looking for the right object in the list. Maybe in some kind of generic tool, decorator, iter-helper, or whatever, something that has to deal with arbitrary objects provided by random users, which uses "in" instead of a loop with "is" comparisons. I also kind-of like the idea of having d.values() == d.values() return True and otherwise let the comparison return False for everything else. This seems to be the only reasonable behaviour that might(!) have a use case, maybe in the same line as the argument above. I can't really see a reason for implementing anything more than that. Stefan