11
votes

Comment puis-je utiliser Python Itertools.groupby () pour grouper une liste de chaînes par leur premier personnage?

J'ai une liste de chaînes similaires à cette liste: xxx

Comment devrais-je aller sur le regroupement de cette liste par le premier caractère de chaque chaîne à l'aide d'itheroTools.groupby ()? Comment devrais-je fournir l'argument 'Key' requis par itheroTools.groupby ()?


0 commentaires

4 Réponses :


15
votes
groupby(sorted(tags), key=operator.itemgetter(0))

3 commentaires

Cela fonctionne sur Unicodes. Si vous demandez si cela fonctionne sur les chaînes UTF-8, vous devriez plutôt demander quand vous devriez le décoder à un Unicode. La réponse, bien sûr, est dès qu'elle arrive.


Merci, cela fonctionne comme prévu. J'ai une liste de tags dans plusieurs langues et je vais tester la commande avec divers traducteurs.


En fait, il devrait être: groupeby (trié (Tags), touche = opérateur.Itemplgeter (0))



5
votes
>>> for i, j in itertools.groupby(tags, key=lambda x: x[0]):
    print(i, list(j))


a ['apples', 'apricots']
o ['oranges']
p ['pears', 'peaches']

0 commentaires

1
votes

juste une autre solution, xxx


0 commentaires

21
votes

Vous voudrez peut-être créer dict après: xxx


1 commentaires

... mais n'oubliez pas de trier le premier!