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

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • Photoshop Training Channel

    Photoshop Tr

    13 Temmuz 2012
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010