J'ai lu Cet article et est n'a pas fini de travailler pour moi.
éditer: la fonctionnalité que je décrypting est comme la fonction de tri dans Excel ... si cela le rend plus clair EM> P> Voici ma situation, j'ai un document texte délimité par tabulation. Il y a environ 125 000 lignes et 6 colonnes par ligne (les colonnes sont séparées par un caractère d'onglets). J'ai divisé le document en une liste à deux dimensions. P> J'essaie d'écrire une fonction générique pour trier les listes bidimensionnelles. Fondamentalement, j'aimerais avoir une fonction où je peux transmettre la grande liste et la clé d'une ou plusieurs colonnes que je voudrais trier la grande liste par. Évidemment, je voudrais que la première clé passe soit le point de tri principal, puis la deuxième touche, etc. p> toujours confurée? P> Voici un exemple de ce que j'aimerais faire . P> sortByColumn(bigList, 2, 3)
Luke 16 Blue 1
Anna 17 Blue 2
Tyler 22 Blue 6
Bob 22 Blue 10
Ryan 18 Green 3
Ryan 18 Green 8
Joel 18 Orange 1
Katy 13 Pink 5
Garrett 24 Red 7
Leland 18 Yellow 9
4 Réponses :
Ceci triera par les colonnes 2 et 3:
Assurez-vous que vous avez converti les chiffres en InTS, sinon ils trieront par ordre alphabétique plutôt que numériquement ou p>
import operator:
def sortByColumn(bigList, *args)
bigList.sort(key=operator.itemgetter(*args)) # sorts the list in place
C'est fabuleux. Je n'avais jamais entendu parler de poste d'article (ou à l'attaque, que je vois aussi).
C'est exactement ce que je cherche. Merci beaucoup!
L'idée de clé ici (jeu de mots) est d'utiliser une fonction clé qui renvoie un tuple.
Ci-dessous, la fonction de clé est lambda x: (x [IDX] pour IDX dans ARG) code>
x code> est défini sur l'égalité d'un élément d'Alist - c'est-à-dire une ligne de données. Il renvoie une tuple de valeurs, pas seulement une seule valeur. La méthode de tri () trie en fonction du premier élément de la liste, puis rompt les liens avec la seconde, et ainsi de suite. Voir http://wiki.python.org/moin/howto/sorting#sortsportingbykeys a>
Les chiffres doivent être convertis en INTS