Exemples de comment trouver le nombre d'occurrences dans une liste de tuples en python:
Créer une liste de tuples
Créons une liste de tuples :
mylist = [
('a', 'b', 'c',),
('a', 'b', 'c',),
('c', 'b', 'a',),
('a', 'b', ),
('a',)
]
notez que
type(mylist)
type(mylist[0])
donne
<class 'list'>
et
<class 'tuple'>
respectivement
Trouver les occurrences de tuples
Pour trouver les occurrences de tuples dans une liste, une solution consiste à utiliser counter from collections
from collections import Counter
counter = Counter(e for e in mylist)
donne
Counter({('a', 'b', 'c'): 2, ('c', 'b', 'a'): 1, ('a', 'b'): 1, ('a',): 1})
Notez qu'ici ('a', 'b', 'c') et ('c', 'b', 'a') sont considérés comme des tuples différents.
Il est également possible de mettre les résultats des compteurs dans un dictionnaire :
d = dict( counter )
print( d )
print( d.keys() )
print( d[('a', 'b', 'c')] )
donne
{('a', 'b', 'c'): 2, ('c', 'b', 'a'): 1, ('a', 'b'): 1, ('a',): 1}
dict_keys([('a', 'b', 'c'), ('c', 'b', 'a'), ('a', 'b'), ('a',)])
2
Trouver les occurrences de tuples qui contiennent les mêmes éléments
Autre exemple, trouvez les occurrences de tuples qui contiennent les mêmes éléments. Donc ('a', 'b', 'c') == ('c', 'b', 'a')
from collections import Counter
counter = Counter(tuple(sorted(t)) for t in mylist)
print(counter)
donne
Counter({('a', 'b', 'c'): 3, ('a', 'b'): 1, ('a',): 1})
Trouver les occurrences d'éléments dans chaque tuple
Pour ne trouver que des occurrences d'éléments dans chaque tuple, une solution est de faire :
import itertools
mylist2 = list(itertools.chain.from_iterable(mylist) )
print(mylist2)
donne
['a', 'b', 'c', 'a', 'b', 'c', 'c', 'b', 'a', 'a', 'b', 'a']
print( Counter(mylist2) )
donne
Counter({'a': 5, 'b': 4, 'c': 3})
Note: pour n'obtenir que des éléments uniques :
mylist2 = list( set(itertools.chain.from_iterable(mylist)) )
print(mylist2)
donne
['c', 'a', 'b']