如何打印字典中低于一定百分比的值?

2024-10-03 19:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个代码来打印任何一个或多个测验分数低于70的学生的姓名,然后是该学生测验分数低于70的排序列表

quiz_scores = {
    'Corbin': [92, 66, 88, 91, 100, 95, 94],
    'Kevin': [100, 99, 100, 98, 95, 98, 99],
    'Hannah': [79, 67, 78, 81, 70, 55, 74],
    'Ben': [94, 88, 85, 100, 91, 79, 88],
    'Yasaswini': [99, 90, 88, 91, 89, 95, 94],
    'Veda': [79, 97, 88, 82, 70, 95, 94],
    'Jack': [59, 67, 74, 91, 70, 75, 56]
}

Tags: 代码列表排序quiz学生姓名benjack
2条回答

如果您可以使用熊猫:

import pandas as pd
df= pd.DataFrame(quiz_scores).T.unstack()
a = pd.DataFrame(df[df < 70])
a = a[0].sort_values() 
a.reset_index().groupby('level_1')[0].apply(list).to_dict()                                                                                                                                       
# {'Corbin': [66], 'Hannah': [55, 67], 'Jack': [56, 59, 67]}

这是工作代码

quiz_scores = {
    'Corbin': [92, 66, 88, 91, 100, 95, 94],
    'Kevin': [100, 99, 100, 98, 95, 98, 99],
    'Hannah': [79, 67, 78, 81, 70, 55, 74],
    'Ben': [94, 88, 85, 100, 91, 79, 88],
    'Yasaswini': [99, 90, 88, 91, 89, 95, 94],
    'Veda': [79, 97, 88, 82, 70, 95, 94],
    'Jack': [59, 67, 74, 91, 70, 75, 56]
}

print({name: [score for score in scores if score < 70] for name, scores in quiz_scores.items() if min(*scores) < 70})

和样本输出

> python run.py
{'Corbin': [66], 'Hannah': [67, 55], 'Jack': [59, 67, 56]}

相关问题 更多 >