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

时间:2016-01-09 02:05:22

标签: python sorting alphabetical

我有一个清单

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

我需要按字母顺序排序。

输出应为

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

但是,使用.sort函数不起作用,只会按数字顺序对其进行排序。

1 个答案:

答案 0 :(得分:2)

您可以为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']