python: 多屬性排序
阿新 • • 發佈:2018-12-31
多級排序實現介面
即每個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]