我有一个清单
['2,alex', '5,james', '3,ben']
我需要按字母顺序排序。
输出应为
['2,alex', '3,ben', '5,james']
但是,使用.sort
函数不起作用,只会按数字顺序对其进行排序。
答案 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']