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

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • TechRax

    TechRax

    21 EYLÜL 2009