У меня есть список, который содержит несколько наборов строк, и я хотел бы найти симметричное различие между каждой строкой и другими строками в наборе.
Например, у меня есть следующий список:
targets = [{'B', 'C', 'A'}, {'E', 'C', 'D'}, {'F', 'E', 'D'}]
Для вышеперечисленного, желаемый результат:
[2, 0, 1]
потому что в первом наборе A и B не найдены ни в одном из других наборов, для второго набора нет уникальных элементов в наборе, а для третьего набора F не найден ни в одном из другие комплекты.
Я думал о том, чтобы приблизиться к этому; найти пересечение каждого набора и вычесть длину пересечения из длины списка, но set.intersection (*), похоже, не работает со строками, поэтому я застрял:
set1 = {'A', 'B', 'C'}
set2 = {'C', 'D', 'E'}
set3 = {'D', 'E', 'F'}
targets = [set1, set2, set3]
>>> set.intersection(*targets)
set()