itertools.groupby() ne regroupez pas correctement
J'ai ces données:
self.data = [(1, 1, 5.0),
(1, 2, 3.0),
(1, 3, 4.0),
(2, 1, 4.0),
(2, 2, 2.0)]
Lorsque j'exécute ce code:
for mid, group in itertools.groupby(self.data, key=operator.itemgetter(0)):
pour list(group)
j'obtiens:
[(1, 1, 5.0),
(1, 2, 3.0),
(1, 3, 4.0)]
qui est ce que je veux.
Mais si j'utilise 1 au lieu de 0
for mid, group in itertools.groupby(self.data, key=operator.itemgetter(1)):
de groupe par le second nombre de tuples, je ne reçois:
[(1, 1, 5.0)]
même si il y a d'autres tuples qui ont "1" 1 (2e) position.
Vous devez vous connecter pour publier un commentaire.
itertools.groupby recueille contiguë éléments avec la même clé.
Si vous souhaitez que tous les éléments avec la même clé, vous devez trier
self.data
premier.Variante sans tri (par dictionnaire). Devrait être de mieux en terme de performance.
itertools.groupby
...Ci-dessous "fixe" plusieurs ennuis avec Python
itertools.groupby
.Plus précisément,
key
comme paramètre nommé seulement.tuple(key, grouped_values)
où les valeurs sont spécifiées par le 3e paramètre.Exemple D'Utilisation
Ce estampes,
Jouer avec ce code