Счет не хранится в любом месте, поэтому итерация неизбежна.Но вы можете использовать collections.Counter
с выражением генератора, чтобы избежать явного цикла for
:
from collections import Counter
from itertools import chain, combinations
L1 = ["cat", "toe", "man"]
L2 = ["cat", "toe", "ice"]
L3 = ["cat", "hat", "bed"]
L_comb = [L1, L2, L3]
c = Counter(map(frozenset, chain.from_iterable(combinations(L, 2) for L in L_comb)))
Результат:
Counter({frozenset({'cat', 'toe'}): 2,
frozenset({'cat', 'man'}): 1,
frozenset({'man', 'toe'}): 1,
frozenset({'cat', 'ice'}): 1,
frozenset({'ice', 'toe'}): 1,
frozenset({'cat', 'hat'}): 1,
frozenset({'bed', 'cat'}): 1,
frozenset({'bed', 'hat'}): 1})