Sắp xếp không phân biệt chữ hoa chữ thường, sắp xếp chuỗi tại chỗ , trong Python 2 OR 3 (được thử nghiệm trong Python 2.7.17 và Python 3.6.9):
>>> 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']
Điều quan trọng là key=str.lower
. Đây là những lệnh đó trông như thế nào chỉ với các lệnh, để dễ dàng sao chép để bạn có thể kiểm tra chúng:
x = ["aa", "A", "bb", "B", "cc", "C"]
x.sort()
x
x.sort(key=str.lower)
x
Lưu ý rằng nếu các chuỗi của bạn là các chuỗi unicode, tuy nhiên (như u'some string'
), thì chỉ trong Python 2 (KHÔNG phải trong Python 3 trong trường hợp này), x.sort(key=str.lower)
lệnh trên sẽ thất bại và xuất ra lỗi sau:
TypeError: descriptor 'lower' requires a 'str' object but received a 'unicode'
Nếu bạn gặp lỗi này, thì hãy nâng cấp lên Python 3 nơi chúng xử lý sắp xếp unicode hoặc chuyển đổi chuỗi unicode của bạn thành chuỗi ASCII trước, bằng cách sử dụng cách hiểu danh sách, như sau:
# 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)
Người giới thiệu:
- https://docs.python.org/3/l Library / stdtypes.html#list.sort
- Chuyển đổi một chuỗi Unicode thành một chuỗi trong Python (chứa các ký hiệu bổ sung)
- https://www.programiz.com/python-programming/list-comp Hiểu