1 回答

pardon110
TA贡献1038条经验 获得超227个赞
用下列方法就好了,如果想按照指定列排序,自定义回调
list.sort(cmp=None, key=None, reverse=False) #py 2 list.sort(key=None, reverse=False) # py 3
以元组列表为例,需要注意的是列表元素为可迭代序列,下面是按照第一列里面的数字大小排序
l = [('frag_eroderd_10.png', 3282, 235, -50, 0), ('frag_eroderd_103.png',1181, 1652, -172.0), ('frag_eroderd_1.png', 2881, 1652, -172.0)] def preg(el): res = re.search(r'(?:[a-z]+_){1,}(?P<number>\d+).(?:png|jpg|gif)', el[0]) return int(res['number']) if res is not None else 0 l.sort(key=preg) print(l) # 效果如下 [('frag_eroderd_1.png', 2881, 1652, -172.0), ('frag_eroderd_10.png', 3282, 235, -50, 0), ('frag_eroderd_103.png', 1181, 1652, -172.0)]
如果只是按列排,用一个lambda函数就可以了,下面是按第二列排序的效果
l.sort(key=lambda x: x[1]) # 默认升序 l.sort(key=lambda x: x[1],reverse=True) # 降序
添加回答
举报
0/150
提交
取消