Mat*_*att 4 python sorting list
不找工作.希望了解为什么Python会以这种方式排序.
>>> a = ['aaa','Bbb']
>>> a.sort()
>>> print(a)
['Bbb', 'aaa']
>>> a = ['aaa','bbb']
>>> a.sort()
>>> print(a)
['aaa', 'bbb']
Run Code Online (Sandbox Code Playgroud)
这是因为大写字符的ASCII值低于小写字母的ASCII值.因此,如果我们按递增顺序对它们进行排序,则大写将在小写之前
A为65a为9765 <97
因此,A < a如果你按顺序排序
str根据原始字节值 (Python 2) 或 Unicode 序数值 (Python 3) 排序;在 ASCII 和 Unicode 中,所有大写字母的值都低于所有小写字母,因此它们排在前面:
>>> ord('A'), ord('Z')
(65, 90)
>>> ord('a'), ord('z')
(97, 112)
Run Code Online (Sandbox Code Playgroud)
某些语言环境(例如en_US)将更改此排序顺序;如果您locale.strxfrm作为key函数传递,您将在这些语言环境中获得不区分大小写的排序,例如
>>> import locale
>>> locale.setlocale(locale.LC_COLLATE, 'en_US.utf-8')
>>> a.sort(key=locale.strxfrm)
>>> a
['aaa', 'Bbb']
Run Code Online (Sandbox Code Playgroud)