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

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • friendz.net

    friendz.net

    29 EKİM 2010
  • Samantha Crain

    Samantha Cra

    30 EKİM 2008