当前位置: 移动技术网 > IT编程>脚本编程>Python > Python按照先后顺序,对列表进行多条件自定义排序

Python按照先后顺序,对列表进行多条件自定义排序

2020年07月24日  | 移动技术网IT编程  | 我要评论

需求:
对指定的无序列表,按照以下顺序排序:
①先按照【编号】从小到大进行排序
②再按照列表中包含【方案、扩初、施工图、后期服务】的顺序进行排序

实现:
自定义排序函数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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网