博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
列表中字符串按照某种规则排序的方法(python)
阅读量:4920 次
发布时间:2019-06-11

本文共 807 字,大约阅读时间需要 2 分钟。

有时候处理数据时,想要按照字符串中的数字的大小进行排序。

譬如,存在一组记录文件,分别为‘1.dat’,'2.dat'...

当我把该文件夹中的所有记录文件名读到一个列表中,这些字符串的排列方式为:

如何让这些字符串按照数字排列?

1、首先通过正则表达式,提取出字符串中的数字

2、排序,选择built-in函数sorted进行排序

sorted(iterable, cmp=None, key=None, reverse=False)

iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。

 

所以说排序方式按照数字拍的话,key就要对应里面的数字。

所以,这个问题只需一句话解决:

s = ['1.dat','10.dat','5.dat']new = sorted(s,key = lambda i:int(re.match(r'(\d+)',i).group()))print new

 得到的结果即为

 对于该操作,同样可以使用list.sort(),python2.4之后,list.sort和sorted都添加了一个key参数用来指定一个函数

不同的地方是:内置sorted返回一个新的列表,而list.sort是对列表进行操作

s = ['1.dat','10.dat','5.dat']s.sort(key = lambda i:int(re.match(r'(\d+)',i).group()))print s

 

转载于:https://www.cnblogs.com/pinking/p/6813728.html

你可能感兴趣的文章
html5中<body>标签支持的事件
查看>>
F. 约束
查看>>
安装 jdk
查看>>
对康拓展开式和逆康托展开式的认识
查看>>
第二次作业(homework-02)成绩公布
查看>>
KVM&amp;Libvirt基本概念及开发杂谈
查看>>
flv视频格式详细解析
查看>>
Python装饰器
查看>>
美剧推荐之《越狱》
查看>>
网络相关知识
查看>>
Chapter 1 Securing Your Server and Network(5):使用SSL加密会话
查看>>
19、路由和拓扑图和lan
查看>>
编写高性能 Web 应用程序的 10 个技巧
查看>>
a 锚点跳转滑动效果
查看>>
iOS9.0 LaunchScreen.StroyBoard自定义启动图片
查看>>
14、求出最大元素的下标及地址值——数组
查看>>
rm 删除不掉文件,报错解决 以及 chattr的介绍
查看>>
《需求工程——软件建模与分析》读后感
查看>>
ovs-vsctl 命令详解
查看>>
超级账本Fabric教程(一):超级账本入门
查看>>