["python","set"]
Opposite of set.intersection in python?

In Python you can use a.intersection(b) to find the items common to both sets. Is there a way to do the disjoint opposite version of this? Items that are not common to both a and b; the unique items in a unioned with the unique items in b?
You are looking for the symmetric difference; all elements that appear only in set a or in set b, but not both: a.symmetric_difference(b) From the set.symmetric_difference() method documentation: Return a new set with elements in either the set or other but not both. You can use the ^ operator too, if both a and b are sets: a ^ b while set.symmetric_difference() takes any iterable for the other argument. The output is the equivalent of (a | b) - (a & b), the union of both sets minus the intersection of both sets. Producing the output takes O(M+N) time for sets of length M and N, respectively; M steps to copy set a then N steps to alter that set based on each value in b: def symmetric_difference(a, b): result = set(a) for elem in b: try: result.remove(elem) except KeyError: result.add(elem) return result There are in-place variants too, where set a is altered directly; use a.symmetric_difference_update(b) or a ^= b. The in-place variant takes O(N) time, so it depends on the size of set b only: def symmetric_difference_update(a, b): for elem in b: try: a.remove(elem) except KeyError: a.add(elem) # no return, a has been updated in-place