Python按照先后顺序,对列表进行多条件自定义排序
程序员文章站
2022-12-02 16:41:38
需求:对指定的列表,按照以下顺序排序:①先按照【编号】从小到大进行排序②再按照列表中包含【方案、扩初、施工图、后期服务】的顺序进行排序实现:自定义排序函数reversed_cmp,并将这个函数传入sort或sorted方法中。在python3中,借助functools包来完成。import functoolsarr = [ '2020-1001_有方案', '2020-1001_无后期服务', '2020-1001_有扩初', '2020-1001_无施工图...
需求:
对指定的无序列表,按照以下顺序排序:
①先按照【编号】从小到大进行排序
②再按照列表中包含【方案、扩初、施工图、后期服务】的顺序进行排序
实现:
自定义排序函数reversed_cmp,并将这个函数传入sort或sorted方法中。在python3中,借助functools包来完成。
import functools
arr = [
'2020-1001_有方案',
'2020-1001_无后期服务',
'2020-1002_有后期服务',
'2019-1001_无施工图',
'2020-1001_有扩初',
'2020-1001_无施工图',
'2019-1001_有方案',
'2020-1002_有方案',
'2020-1002_有扩初',
'2019-1001_有扩初',
'2020-1002_有施工图',
'2019-1001_无后期服务'
]
def reversed_cmp(x, y):
bh1 = x[0:9]
bh2 = y[0:9]
arr = ['方案','扩初','施工图','后期服务']
if bh1 > bh2:
return 1
elif bh1 == bh2:
if arr.index(x[11:len(x)]) > arr.index(y[11:len(y)]):
return 1
else:return -1
else:
return -1
result = sorted(arr,key=functools.cmp_to_key(reversed_cmp))
for x in result:
print(x)
输出结果:
本文地址:https://blog.csdn.net/qq_33966519/article/details/107543089
下一篇: 腾讯微博即将关停下线