I'd like to compare multiple objects and return True
only if all objects are not equal among themselves. I tried using the code below, but it doesn't work. If obj1 and obj3 are equal and obj2 and obj3 are not equal, the result is True
.
obj1 != obj2 != obj3
I have more than 3 objects to compare. Using the code below is out of question:
all([obj1 != obj2, obj1 != obj3, obj2 != obj3])
You can check that all of the items in a list are unique by converting it to a set.
If the objects are unhashable but orderable (for example, lists) then you can transform the
itertools
solution from O(n^2) to O(n log n) by sorting:Here's a full implementation:
@Michael Hoffman's answer is good if the objects are all hashable. If not, you can use itertools.combinations:
If the objects are all hashable, then you can see whether a
frozenset
of the sequence of objects has the same length as the sequence itself:Example: