Python排序: sorted

 

单个字段和多个字段排序

code_dict = {
    'sh001': {'code': 'shoo1', 'InstitutionNums': 598, 'Pinyin': 'jinrongjie'},
    'sh002': {'code': 'shoo2', 'InstitutionNums': 12,'Pinyin': 'ddd'},
    'sh003': {'code': 'shoo3', 'InstitutionNums': 111, 'Pinyin': 'ccc'},
    'sh004': {'code': 'shoo4', 'InstitutionNums': 111, 'Pinyin': 'aaa'}
}

# 单个排序
back_arr = sorted(code_dict.values(), key=lambda x: int(x.get('InstitutionNums', 0)), reverse=True)
print(back_arr)

# 双字段排序
back_arr = sorted(code_dict.values(), key=lambda x: (-int(x.get('InstitutionNums', 0)), x.get('Pinyin', '')))
print(back_arr)

for rank_index, item in enumerate(back_arr, 1):
    item['Rank'] = rank_index
    print(item)
    
# {'code': 'shoo1', 'InstitutionNums': 598, 'Pinyin': 'jinrongjie', 'Rank': 1}
# {'code': 'shoo4', 'InstitutionNums': 111, 'Pinyin': 'aaa', 'Rank': 2}
# {'code': 'shoo3', 'InstitutionNums': 111, 'Pinyin': 'ccc', 'Rank': 3}
# {'code': 'shoo2', 'InstitutionNums': 12, 'Pinyin': 'ddd', 'Rank': 4}

区别是: 元组形式的传递多个需要排序的字段,另外前面用-号来表示倒序,正排序则不表示, 去掉了reverse字段。

 

posted @ 2020-09-17 18:39  Adamanter  阅读(191)  评论(0)    收藏  举报