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字段。