python开发笔记-字典按值排序取前n个key值

场景举例: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)排序

相关文章
相关标签/搜索