Python:按字母顺序对列表中的字母和数字进行排序

Python: Alphabetically sorting a list with letters and numbers in

我有一个列表

['2,alex', '5,james', '3,ben']

我需要按字母顺序排序。

输出应该是

['2,alex', '3,ben', '5,james']

但是使用 .sort 函数不起作用,只能按数字顺序排序。

您可以像下面那样给 list.sort() 一个密钥。如果你想按数字排序,你可以使用 str.split(',')[0] 来获取它,并将其转换为整数:

>>> l = ['2,alex', '5,james', '3,ben']
>>> l.sort(key=lambda x: int(x.split(',')[0]))
>>> l
['2,alex', '3,ben', '5,james']

如果您需要按名称而不是数字排序,只需使用相同的方法,但将 [0] 替换为 [1],并删除 int() 函数:

>>> l = ['2,alex', '5,james', '3,ben']
>>> l.sort(key=lambda x: x.split(',')[1])
>>> l
['2,alex', '3,ben', '5,james']

让我们看一个清楚的例子:

>>> sorted(l, key=lambda x: int(x.split(',')[0]))
['5,james', '10,ben', '22,alex']
>>> sorted(l, key=lambda x: x.split(',')[1])
['22,alex', '10,ben', '5,james']