欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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)

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

本文地址:https://blog.csdn.net/qq_33966519/article/details/107543089

相关标签: Python Flask