Le comptage de la quantité d'occurrences dans une liste de tuples
Je suis assez nouveau à python, mais je n'ai pas été capable de trouver une solution à mon problème, n'importe où.
Je veux compter les occurrences d'une chaîne dans une liste de tuples.
Voici la liste de tuples:
list1 = [
('12392', 'some string', 'some other string'),
('12392', 'some new string', 'some other string'),
('7862', None, 'some other string')
]
J'ai essayé ceci mais ça imprime 0
for entry in list1:
print list1.count(entry[0])
Que le même ID " apparaît deux fois dans la liste, il doit retourner:
2
1
J'ai aussi essayé d'incrémenter un compteur pour chaque occurrence de la même ID, mais ne pouvait pas tout à fait saisir comment l'écrire.
*MODIFIER:
À l'aide de Eumiro est génial réponse. Je viens de réaliser que je n'ai pas expliquer le problème.
J'ai réellement besoin le montant total des entrées qui a une valeur supérieure à 1. Mais si j'essaie de faire:
for name, value in list1:
if value > 1:
print value
J'obtiens cette erreur:
ValueError: Too many values to unpack
OriginalL'auteur mackwerk | 2013-04-15
Vous devez vous connecter pour publier un commentaire.
Peut-être
collections.Compteur
pourrait résoudre votre problème:retourne
Il est rapide car il itère sur votre liste, juste une fois. Vous parcourez les entrées et puis essayer d'obtenir un nombre de ces entrées dans votre liste. Qui ne peut être fait avec
.count
, mais peut être fait comme suit:Mais sérieusement, regardez
collections.Counter
.MODIFIER: j'ai réellement besoin le montant total des inscriptions, qui a une valeur de plus de 1.
Vous pouvez toujours utiliser le
Counter
:retourne
2
, c'est à dire la somme des nombres qui sont supérieurs à 1.Counter
, c'est vraiment simpleMerci! C'est vraiment simple! Je viens de réaliser que je n'ai pas expliquer le problème. J'ai mis à jour la question d'origine.
voir mon édité réponse.
Génial! Merci beaucoup! Les choses que vous faites dans la somme est appelée la compréhension, à droite?
un générateur de compréhension pour être exact.
OriginalL'auteur eumiro
list1.count(entry[0])
ne fonctionnera pas, car elle regarde chacun des trois tuples danslist1
, par exemple.('12392', 'some string', 'some other string')
et vérifie si elles sont égales à'12392'
par exemple, qui n'est évidemment pas le cas.@eurmiro réponse vous montre comment le faire avec
Counter
(ce qui est le meilleur moyen!) mais ici, c'est une mauvaise version de l'homme, afin d'illustrer commentCounter
fonctionne à l'aide d'un dictionnaire et de ladict.get(k, [,d])
méthode qui tentera d'obtenir une clé (k
), mais si elle n'existe pas, il retourne la valeur par défaut à la place (d
):OriginalL'auteur jamylak