2011-04-09 4 views
0

Scénario: Liste contenant « lignes » d'enregistrements de la liste avec une variété de valeurstri liste des listes avec des valeurs numériques mixtes

Problème: list.sort ne prend pas les valeurs numériques en considération si les valeurs finissent partout le lieu

-à-dire 9 apparaît dans la liste après 80

J'ai essayé d'utiliser

list.sort(key=operator.itemgetter[index]) 

et de faire un

list.sort(lambda x,y:int(x[index])<int(y[index])) 

en vain.

+0

Quelles sont les valeurs dans la liste - nous avons besoin de plus d'informations – Mark

Répondre

3

Utilisez le numéro converti comme clé.

L.sort(key=lambda x: int(x[index])) 
+0

aurait dû voir que, merci! – Bolster

2

Vous êtes sur la bonne voie, mais operator.itemgetter est une fonction, de sorte que la syntaxe est:

list.sort(key=operator.itemgetter(index)) 

Ou bien, utilisez un lambda:

list.sort(key=lambda x: x[index]) 

Le clé paramètre est le chemin à parcourir, le cmp paramètre a été supprimé dans Python 3. Si vous souhaitez utiliser quand même, vous devez utiliser le cmp() fonction intégrée pour mettre en œuvre votre comparateur:

list.sort(cmp=lambda x, y: cmp(x[index], y[index])) 

Voir aussi: http://wiki.python.org/moin/HowTo/Sorting/

Questions connexes