Как получить симметричную разницу между двумя списками?
Я хотел бы знать, как получить симметричную разницу между двумя списками.
Например:
list1 = ['a','a','b','c','d']
list2 = ['a','b','c','f']
sym_dif = ['a', 'd', 'f']
Наборы не работают, потому что у меня есть несколько экземпляров одного и того же объекта в каждом списке. Я пробовал просматривать Stackru и Интернет, и все всегда предлагают наборы. Может быть, я не ищу симметричную разницу? Я просто ищу каждый элемент, который появляется только в одном списке или больше в одном списке, чем в другом.
1 ответ
Решение
Вы можете использовать collections.Counter
вместо:
from collections import Counter
c1 = Counter(list1)
c2 = Counter(list2)
print(list((c1 - c2 | c2 - c1).elements()))
Это выводит:
['a', 'd', 'f']