SORU
30 AĞUSTOS 2008, CUMARTESİ


Nasıl Python dizeleri listesini sıralama?

Python alfabetik olarak sıralanmış bir liste oluşturmanın en iyi yolu nedir?

CEVAP
30 AĞUSTOS 2008, CUMARTESİ


Temel cevap:

mylist = ["b", "C", "A"]
mylist.sort()

Bu özgün listesi (türlü yerinde yani) değiştirir. Listenin sıralanmış bir kopyasını, orijinal değiştirmeden almak, sorted() işlevini kullanın:

for x in sorted(mylist):
    print x

Ancak, yukarıdaki örnekler dikkate yerel almıyorlar, ve bir büyük küçük harf duyarlı sıralama yapmak çünkü biraz saf. Sen-ebilmek yararlanmak isteğe bağlı parametre key belirttiğiniz özel sıralama düzeni (alternatif kullanarak cmp, bir itiraz çözümü olmalı değerlendirilmesi birden çok kez - key sadece bir kez başına hesaplanan element).

Yani, mevcut yerel göre sıralama dikkate dile özgü kuralları dikkate alarak (cmp_to_key functools yardımcısı bir fonksiyonudur):

sorted(mylist, key=cmp_to_key(locale.strcoll))

Ve son olarak, eğer gerekirse, sıralama için custom locale belirtebilirsiniz:

import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
  key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']

Son bir not: büyük küçük harf duyarsız yalnızca ASCII karakterleri alt çalıştıkları için lower() yöntem - bu yanlış kullanımı hangi sıralama örnekleri göreceksiniz. Bu iki İngilizce olmayan veri: herhangi bir yanlış vardır

# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007