2011-04-24 4 views
0

Comment trier une liste par élémant c'est un tuple? Soit disons ci-dessous la liste LL. Je veux trier ID2 - LL [1] qui est un tuple as asc. Comment je le ferais.En python Trier une liste de tuples?

  Id, Id2 CCC 
      A123 A120 '2011-03' 
    LL=  A133 A123 '2011-03' 
      D123 D120 '2011-04' 
      D140 D123 '2011-04' 
+0

'ID2 - LL [1] qui est un tuple as asc' - * quoi *? – ThiefMaster

+0

Je veux trier par ID2, asc – Merlin

Répondre

4

Jetez un oeil à http://wiki.python.org/moin/HowTo/Sorting/

sorted(LL, key=itemgetter(1)) pourrait faire ce que vous voulez. Veuillez noter que vous devez from operator import itemgetter pour obtenir la fonction itemgetter.

In [1]: LL = (('A123', 'A120', '2011-03'), ('A133', 'A123', '2011-03'), ('D123', 'D120', '2011-04'), ('D140', 'D123', '2011-04')) 

In [2]: from operator import itemgetter 

In [3]: sorted(LL, key=itemgetter(1)) 
Out[3]: 
[('A123', 'A120', '2011-03'), 
('A133', 'A123', '2011-03'), 
('D123', 'D120', '2011-04'), 
('D140', 'D123', '2011-04')] 
+0

Est-ce important que key = itemgetter (1) est un tuple – Merlin

+0

'key = itemgetter (1)' fera 'trié()' récupère l'élément avec l'index 1 de chaque élément dans 'LL '. S'il vous plaît lisez la page à laquelle je suis lié, elle l'explique: http://wiki.python.org/moin/HowTo/Sorting/#Operator_Module_Functions – ThiefMaster

+0

J'ai essayé de comprendre cela pendant un moment. J'ai trouvé mon problème. La base de données a le col trié comme clé primaire qui ne cesse de changer ma commande. ;-)))))! merci – Merlin

0

Vous pouvez aller:

 
LL.sort(key=lambda x:x[1]) 

Où 1 est l'indice de l'élément du Tupple.

+1

Mieux vaut utiliser 'itemgetter (1)' depuis le module 'operator'. Sinon, une fonction python doit être appelée pour chaque élément (les fonctions 'operator' sont écrites en C si vous utilisez l'implémentation par défaut de CPython) – ThiefMaster

Questions connexes