Skip to content

Instantly share code, notes, and snippets.

@cesarkawakami
Last active October 2, 2015 20:23
Show Gist options
  • Save cesarkawakami/7509261f6cd430aa64d7 to your computer and use it in GitHub Desktop.
Save cesarkawakami/7509261f6cd430aa64d7 to your computer and use it in GitHub Desktop.
def symmetric_multi_difference(list_a, list_b):
seen = []
result = []
for element in list_a + list_b:
if element in seen:
continue
seen.append(element)
elements_in_a = [x for x in list_a if x == element]
elements_in_b = [x for x in list_b if x == element]
if len(elements_in_a) > len(elements_in_b):
result.extend(elements_in_a[:len(elements_in_a) - len(elements_in_b)])
elif len(elements_in_b) > len(elements_in_a):
result.extend(elements_in_b[:len(elements_in_b) - len(elements_in_a)])
return result
print sorted(symmetric_multi_difference(["a", "a", "b", "b"], ["a", "a", "a", "b"]))
# ['a', 'b']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment