場景舉例:app
假如咱們有某個班級的語文成績數據,格式爲字典,其中字典key爲學生姓名,value爲學生成績;測試
那麼,如何得到單科成績排名前3的學生姓名?spa
代碼以下:--數據樣例,方便測試 code
def dic_order_value_and_get_key(dicts, count): # by hellojesson # 字典根據value排序,而且獲取value排名前幾的key # 樣例: dicts = {'王二狗':66,'李大東':55,'劉小明':99, '胡八一':88} final_result = [] # 先對字典排序 sorted_dic = sorted([(k, v) for k, v in dicts.items()], reverse=True) tmp_set = set() # 定義集合 會去重元素 --此處存在一個問題,成績相同的會忽略,有待改進 for item in sorted_dic: tmp_set.add(item[1]) for list_item in sorted(tmp_set, reverse=True)[:count]: for dic_item in sorted_dic: if dic_item[1] == list_item: final_result.append(dic_item[0]) return final_result
上邊代碼是一個獨立的方法,調用的時候,將符合格式的字典數據傳入,以及傳入須要獲取的前幾位值,blog
例:取前3名 dic_order_value_and_get_key(dicts, 3)排序