首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数值排序逗号分隔的数字字符串

问数值排序逗号分隔的数字字符串
EN

Stack Overflow用户
提问于 2017-02-26 17:46:38
回答 2查看 1.7K关注 0票数 2

将一组.csv数值按列排序。可以选择的是,列数是不同的。例如,使用Python:

代码语言:javascript
复制
        print(sorted(['9,11', '70,10', '10,8,1','10,70']))

产生

代码语言:javascript
复制
        ['10,70', '10,8,1', '70,10', '9,11']

而所期望的结果是

代码语言:javascript
复制
        ['9,11', '10,8,1', '10,70', '70,10']

首先,按第一列排序,然后按第二列排序,等等。

很明显,这是可以做到的,但能否做到优雅呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-26 17:52:03

通过使用key的sorted参数,可以做得更好一些。

代码语言:javascript
复制
data = [
    '9,11',
    '70,10',
    '10,8,1',
    '10,70'
]

print sorted(data, key=lambda s: map(int, s.split(',')))

结果:

代码语言:javascript
复制
['9,11', '10,8,1', '10,70', '70,10']

使用上面的代码,我们将列表中的每个字符串转换为一个整数值列表,并使用这个整数值列表作为排序键。

票数 3
EN

Stack Overflow用户

发布于 2017-02-26 18:57:08

如果您不介意第三方模块,您可以使用纳蒂,它提供函数natsorted,该函数旨在替代sorted。

代码语言:javascript
复制
>>>> import natsort
>>> natsort.natsorted(['9,11', '70,10', '10,8,1','10,70'])
['9,11', '10,8,1', '10,70', '70,10']

坦白说,我是这个包裹的作者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42471977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档