2011-12-16 2 views
0

Je veux trier cette liste:tri d'une liste de chaînes, Ignorer ASCII ordinal Valeurs

>>> L = ['A', 'B', 'C', ... 'Z', 'AA', 'AB', 'AC', ... 'AZ', 'BA' ...] 

Exactement comme il est, quel que soit le contenu (en supposant MAJUSCULES alpha).

>>> L.sort() 
>>> L 
['A', 'AA', 'AB', 'AC'...] 

Comment puis-je faire ceci:

>>> L.parkinglot_sort() 
>>> L 
['A', 'B', 'C', ... ] 

Je pensais à l'essai pour la longueur et le tri chaque longueur, et écraser tous les 1 longueur séparés, 2-longueur, des éléments de longueur n de L dans le nouveau L.

Merci!

+0

Ref: http://stackoverflow.com/questions/4659524/how-to-sort-by-length-of-string-followed-by-alphabetical-order Je pense qu'il est ce que vous voulez :) J. –

Répondre

6

Que pensez-vous de cela?

l.sort(key=lambda element: (len(element), element)) 

Il triera la liste en tenant compte non seulement de chaque élément, mais aussi de sa longueur.

>>> l = ['A', 'AA', 'B', 'BB', 'C', 'CC'] 
>>> l.sort(key=lambda element: (len(element), element)) 
>>> print l 
['A', 'B', 'C', 'AA', 'BB', 'CC'] 
+0

Oh hey ... une fonction anonyme pour faire la mesure avant le tri ... * déclaration lambda survolant la tête * – Droogans

Questions connexes