多级排序实现接口
即每个list中越靠前的属性优先级越大。按优先级从小到大实现多属性排序:
def multi_attribute_sort(lists):
# 输入检查
assert isinstance(lists, list)
# 单属性返回
first_ele = lambda s: s[0]
second_ele = lambda s: s[1]
last_ele = lambda s: s[-1]
# 依次按每个单属性进行排序
a = sorted(lists, key = last_ele)
b = sorted(a, key = second_ele)
c = sorted(b, key = first_ele)
# 输出最终排序结果
return c
实验代码
lists = [[15, 20, 40],
[10, 20, 30],
[90, 17, 25],
[10, 24, 30],
[10, 20, 60],
[18, 20, 30],
[10, 20, 90],
[41, 22, 14]]
def multi_attribute_sort(lists):
# 输入检查
assert isinstance(lists, list)
# 单属性返回
first_ele = lambda s: s[0]
second_ele = lambda s: s[1]
last_ele = lambda s: s[-1]
# 依次按每个单属性进行排序
a = sorted(lists, key = last_ele)
b = sorted(a, key = second_ele)
c = sorted(b, key = first_ele)
# 输出最终排序结果
return c
lists_sorted = multi_attribute_sort(lists)
for line in lists_sorted:
print(line)
打印结果:
[10, 20, 30]
[10, 20, 60]
[10, 20, 90]
[10, 24, 30]
[15, 20, 40]
[18, 20, 30]
[41, 22, 14]
[90, 17, 25]