SORU
20 Kasım 2010, CUMARTESİ


Birden çok özniteliği tarafından bir liste sıralama?

Böyle bir biçiminde listeler dizilerini, ama ben sapmak olabilir) bir listesi var:

[12, 'tall', 'blue', 1]
[15, 'tall', 'black', 3]
[13, 'tall', 'blue', 8]
[9, 'short', 'blue', 3]
[1, 'short', 'black', 2]
[2, 'short', 'red', 9]
[4, 'tall', 'blue', 13]

Eğer bir eleman tarafından sıralamak istesem, ki uzun/kısa öğesi, s = sorted(s, key = itemgetter(1))) yapabilirim

Eğer/kısa ve rengi DE uzun boylu sıralamak isteseydim, öyle bir iki kez yaparım. Her öğe için bir kez. Ancak, bu hesaplama çok saçma. Daha hızlı bir yolu var mı?

CEVAP
20 Kasım 2010, CUMARTESİ


Bir anahtar bir dizi döndüren bir işlevi olabilir:

s = sorted(s, key = lambda x: (x[1], x[2]))

Ya da aynı itemgetter kullanarak elde edebilirsiniz:

import operator
s = sorted(s, key = operator.itemgetter(1, 2))

Ve dikkat edin burada sort sorted kullanmak yerine, ve sonra yeniden atama kullanabilirsiniz:

s.sort(key = operator.itemgetter(1, 2))

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006