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

  • 3DS Max Tutorials

    3DS Max Tuto

    4 AĞUSTOS 2013
  • MovieZoneET

    MovieZoneET

    22 Aralık 2009
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011