评分表求平均分并降序排序

【问题描述】一年一度的校园好声音进行到了激烈的决赛环节,8位评委对入围的6名选手给出了最终的评分,请根据评分表,将每位选手的得分去掉一个最高分和一个最低分后求平均分,并按照平均分由高到低的顺序输出选手编号和最后得分。

dic_score = {'012': [90, 94, 85, 54, 68, 75, 71, 21],
             '005': [8, 75, 21, 65, 89, 97, 25, 75],
             '108': [87, 54, 78, 25, 14, 98, 67, 57],
             '037': [45, 87, 54, 82, 95, 91, 57, 32],
             '066': [95, 67, 51, 48, 98, 92, 80, 39],
             '020': [85, 81, 65, 97, 35, 62, 71, 84]}
dic_avg = {}  # 存放平均分
for k, v in dic_score.items():
    v_min = min(v)
    # 求最低分
    v_max = max(v)  # 求最高分
    v_sum = sum(v)  # 求总分
    v_sum = v_sum - v_max - v_min  # 从总分中去除最大值和最小值
    v_avg = v_sum / (len(v) - 2)  # 求平均分
    dic_avg[k] = v_avg
    # 将参赛者编号和平均值存入字典dic_avg中

# 按照平均分由大到小排序
lt_avg = [(v, k) for k, v in dic_avg.items()]
lt_avg.sort(reverse=True)  # 由大到小排序
lt_avg = [(v, k) for k, v in lt_avg]
dic_avg = {k: v for k, v in lt_avg}
# 将列表lt_avg转换为字典dic_avg
# 输出结果
for k, v in dic_avg.items():
    print(k, v)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值