#自己实现列表的sort函数,支持逆序,可以排序任意类型的数据。

def sort(lt, key=None, reverse=False):
    n = len(lt)
    for i in range(n-1):
        for j in range(i+1, n):
            # 确定是否交换的标志位
            if key:
                is_swap = (key(lt[i]) < key(lt[j])) if reverse else (key(lt[i]) > key(lt[j]))
            else:
                is_swap = (lt[i] < lt[j]) if reverse else (lt[i] > lt[j])

            # 交换
            if is_swap:
                lt[i], lt[j] = lt[j], lt[i]
            '''
            if reverse:
                if key:
                    if key(lt[i]) < key(lt[j]):
                        lt[i], lt[j] = lt[j], lt[i]
                else:
                    if lt[i] < lt[j]:
                        lt[i], lt[j] = lt[j], lt[i]
            else:
                if key:
                    if key(lt[i]) > key(lt[j]):
                        lt[i], lt[j] = lt[j], lt[i]
                else:
                    if lt[i] > lt[j]:
                        lt[i], lt[j] = lt[j], lt[i]
            '''

# lt = [1, 3, 5, 7, 2, 4, 6]
lt = [
    {'name': 'xiaofang', 'age': 20, 'height': 160},
    {'name': 'xiaomin', 'age': 23, 'height': 158},
    {'name': 'xiaodu', 'age': 21, 'height': 165},
    {'name': 'xiaowang', 'age': 24, 'height': 170},
]
sort(lt, key=lambda x: x['height'], reverse=True)
# lt.sort()
for i in lt:
    print(i)

猜你喜欢

转载自blog.csdn.net/LoveL_T/article/details/81200167