場景舉例:
假如我們有某個班級的語文成績數據,格式為字典,其中字典key為學生姓名,value為學生成績;
那么,如何獲得單科成績排名前3的學生姓名?
代碼如下:--數據樣例,方便測試
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
上邊代碼是一個獨立的方法,調用的時候,將符合格式的字典數據傳入,以及傳入需要獲取的前幾位值,
例:取前3名 dic_order_value_and_get_key(dicts, 3)
