J'essaie de trouver les éléments partagés (et le nombre partagé d'occurrences) entre deux listes. Par exemple, l'intersection de ces deux listes:Intersection de deux compteurs
a = [1, 1, 2, 3, 4, 5, 6, 7, 8, 1]
b = [1, 1, 3, 5, 7, 9]
doit retourner Counter({1: 2, 3: 1, 5: 1, 7: 1})
ou quelque chose de similaire, par exemple {1: 2, 3: 1, 5: 1, 7: 1}
ou [1, 1, 3, 5, 7]
(l'ordre de la liste n'a pas d'importance).
J'ai déjà une approche qui fonctionne:
cnts_a = Counter(a)
cnts_b = Counter(b)
cnts_a_b = Counter() # counter for the shared values
for key in set(cnts_a).intersection(cnts_b):
cnts_a_b[key] = min(cnts_a[key], cnts_b[key])
Mais peut-être il y a un moyen plus facile (ou plus rapide) façon?