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)
python 实现列表的排序,要求支持逆序和指定标准(key)
最新推荐文章于 2022-06-07 15:36:41 发布