Büyük / küçük harfe duyarlı olmayan sıralama, dizeyi yerinde sıralama, Python 2 VEYA 3'te (Python 2.7.17 ve Python 3.6.9'da test edilmiştir):
>>> x = ["aa", "A", "bb", "B", "cc", "C"]
>>> x.sort()
>>> x
['A', 'B', 'C', 'aa', 'bb', 'cc']
>>> x.sort(key=str.lower) # <===== there it is!
>>> x
['A', 'aa', 'B', 'bb', 'C', 'cc']
Anahtar şudur key=str.lower
. Kopyalayıp yapıştırmayı kolaylaştırmak için bu komutların yalnızca komutlarla nasıl göründüğü aşağıda açıklanmıştır, böylece onları test edebilirsiniz:
x = ["aa", "A", "bb", "B", "cc", "C"]
x.sort()
x
x.sort(key=str.lower)
x
Dizeleriniz unicode dizeleriyse, ancak (gibi u'some string'
), o zaman yalnızca Python 2'de (bu durumda Python 3'te DEĞİL) yukarıdaki x.sort(key=str.lower)
komutun başarısız olacağını ve aşağıdaki hatayı vereceğini unutmayın:
TypeError: descriptor 'lower' requires a 'str' object but received a 'unicode'
Bu hatayı alırsanız, ya unicode sıralamayı işledikleri Python 3'e yükseltin ya da aşağıdaki gibi bir liste anlayışı kullanarak önce unicode dizelerinizi ASCII dizelerine dönüştürün:
# for Python2, ensure all elements are ASCII (NOT unicode) strings first
x = [str(element) for element in x]
# for Python2, this sort will only work on ASCII (NOT unicode) strings
x.sort(key=str.lower)
Referanslar:
- https://docs.python.org/3/library/stdtypes.html#list.sort
- Bir Unicode dizesini Python'da bir dizeye dönüştürme (ekstra semboller içerir)
- https://www.programiz.com/python-programming/list-comprehension