Как получить симметричную разницу между двумя списками?

Я хотел бы знать, как получить симметричную разницу между двумя списками.

Например:

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']
Другие вопросы по тегам