у меня есть список списков, таких как:Python смежности двух предметов в разных списках
names = [['cat', 'fish'], ['cat'], ['fish', 'dog', 'cat'],
['cat', 'bird', 'fish'], ['fish', 'bird']]
Я хочу подсчитать, сколько раз каждая пара имен, упомянутых вместе во всем списке и выход будет быть как:
{ ['cat', 'fish']: 3, ['cat', 'dog']: 1,['cat','bird']:1
['fish','dog'] : 1, ['fish','bird']:2}
Я пробовал:
from collections import Counter
from collections import defaultdict
co_occurences = defaultdict(Counter)
for tags in names:
for key in tags:
co_occurences[key].update(tags)
print co_occurences
, но это не считается со = вхождения в основном список.
Было бы лучше создать 'перестановочные_значения' программно, я думаю. Подумайте об использовании 'itertools.chain', как и ответ Elmex80s. –
Сэм Муссманн, полностью согласен, но намерение здесь состояло в том, чтобы не решить проблему с перестановкой, чтобы показать способ подсчета, я предполагаю, что, когда ОП спросил, как результат должен был выглядеть, часть перестановки уже решена. Но да, используя itertools для цепочки и создания уникальных пар 2, безусловно, возможно и рекомендуется. было бы здорово, если бы вы могли отредактировать ответ. –