1. 程式人生 > >python: 多屬性排序

python: 多屬性排序

多級排序實現介面

即每個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]