希望按列排序一组.csv数值。可选地,列数可以变化。例如,使用Python:
print(sorted(['9,11', '70,10', '10,8,1','10,70']))
产生
['10,70', '10,8,1', '70,10', '9,11']
,而期望的结果是
['9,11', '10,8,1', '10,70', '70,10']
首先,按第一列排序,然后按第二列排序等。
显然这可以做到,但这可以优雅地完成吗?
答案 0 :(得分:3)
使用key
的{{1}}参数可以更优雅地完成:
sorted
结果:
data = [
'9,11',
'70,10',
'10,8,1',
'10,70'
]
print sorted(data, key=lambda s: map(int, s.split(',')))
使用上面的代码,我们将列表中的每个字符串转换为整数值列表,并使用此整数值列表作为我们的排序键
答案 1 :(得分:1)
如果您不介意第三方模块,可以使用natsort,它提供的功能natsorted
旨在替代sorted
。
>>>> import natsort
>>> natsort.natsorted(['9,11', '70,10', '10,8,1','10,70'])
['9,11', '10,8,1', '10,70', '70,10']
完全披露,我是该软件包的作者。