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

浙公网安备 33010602011771号