Alb*_*rto 2 python sorting string list
假设我有一个像这样的字符串列表
L = ['5', '3', '4', '1', '2', '2 3 5', '2 4 8', '5 22 1 37', '5 22 1 22', '5 22 1 23', ....]
我如何排序这个列表,以便我会有这样的事情:
L = ['1', '2', '3','4', '5', '2 3 5', '2 4 8', '5 22 1 22', ' 5 22 1 23', '5 22 1 37', ...]
基本上我需要根据2个字符串之间的第一个不同的数字来排序列表
你可以使用元组排序:
L = ['5', '3', '4', '1', '2', '2 3 5', '2 4 8', '5 22 1 37', '5 22 1 22', '5 22 1 23']
result = sorted(L, key=lambda x: (len(x.split()),) + tuple(map(int, x.split())))
print(result)
产量
['1', '2', '3', '4', '5', '2 3 5', '2 4 8', '5 22 1 22', '5 22 1 23', '5 22 1 37']
这个想法是使用元组作为键,其中第一个元素是字符串中的数字量,其余的是数字元组.例如,'2 3 5'关键是(3, 2, 3, 5)
正如@ PM2Ring所建议的那样,您可以使用def函数而不是lambda:
def key(x):
    numbers = tuple(map(int, x.split()))
    return (len(numbers),) + numbers
| 归档时间: | 
 | 
| 查看次数: | 65 次 | 
| 最近记录: |