将一组.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']首先,按第一列排序,然后按第二列排序,等等。
很明显,这是可以做到的,但能否做到优雅呢?
发布于 2017-02-26 17:52:03
通过使用key的sorted参数,可以做得更好一些。
data = [
'9,11',
'70,10',
'10,8,1',
'10,70'
]
print sorted(data, key=lambda s: map(int, s.split(',')))结果:
['9,11', '10,8,1', '10,70', '70,10']使用上面的代码,我们将列表中的每个字符串转换为一个整数值列表,并使用这个整数值列表作为排序键。
发布于 2017-02-26 18:57:08
如果您不介意第三方模块,您可以使用纳蒂,它提供函数natsorted,该函数旨在替代sorted。
>>>> import natsort
>>> natsort.natsorted(['9,11', '70,10', '10,8,1','10,70'])
['9,11', '10,8,1', '10,70', '70,10']坦白说,我是这个包裹的作者。
https://stackoverflow.com/questions/42471977
复制相似问题