2012-02-21 19 views
19
bağlı dizilerini listesi

Olası Çoğalt:
python: how to sort a complex list on two different keyssırala iki elemanlarının

Ben dizilerini listesi var

. İki unsura bağlı olarak onları sıralamak istiyorum.

sorted(unsorted, key = lambda element : element[1]) 

Ama nasıl iki anahtarlarıylaaptal yapmak: Ben ikinci eleman bunları sıralamak bilen

unsorted = [('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3), ('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)] 
sorted = [('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3), ('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)] 

İşte örnek takip ediyor?

+2

Python tarafından yapılan sıralama sabittir, yani aslında en az önemli öğeye, daha sonra en önemli öğeye iki kez sıralayabilirsiniz. Bazı durumlarda bu aslında daha hızlı olabilir (ancak sadece birkaç kez). –

cevap

38
sorted(unsorted, key=lambda element: (element[1], element[2])) 

Örnek çıktıdaki tuşlar için bir sipariş verdim.

+2

(Sıralanmamış, anahtar = lambda öğesi: (öğe [1:])) veya sıralanmış (sıralanmamış, anahtar = lambda öğesi: (öğe [1: 3])) daha iyi olabilir – pod2metra

+2

@ pod2metra Çok sayıda olasılık vardır. Muhtemelen en iyi 'operator.itemgetter (1,2) 'olacaktır. –