为什么Python排序首先放置大写项?

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)

mri*_*rid 9

这是因为大写字符的ASCII值低于小写字母的ASCII值.因此,如果我们按递增顺序对它们进行排序,则大写将在小写之前

  • ASCII A为65
  • ASCII a为97

65 <97

因此,A < a如果你按顺序排序


Sha*_*ger 5

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)