在python中, 经常会遇到需要将字典,列表按值排序的情景。但是这些数据里的单元可能很复杂的组合的字符串,所以如何在元素里提取出排序的标准,就成了一个问题。
解决办法:利用Re模块和sort(key=)功能
lst = os.listdir()
#lst = ['103_om', '92_om', '10_om', '21_om', '72_om']
现将这个lst按照前面的数字大小进行排序:
import os
import re
lst.sort(key=lambda x: int(re.findall(r'\d+',x)[0]))
#lst = ['10_om', '21_om', '72_om', '92_om', '103_om']
key 接收函数 利用lambda定义临时函数,获取x. 利用re.findall(r'\d+',x) 正则表达找寻x中的数字'\d','\d+'表示出现的所有数字,最后返回的是列表