我有一个带有成绩范围的python字典,如下所示:
grade_boundaries = {
'A': [70, 100],
'B': [60, 69],
'C': [50, 59],
'D': [40, 49],
'E': [30, 39],
'F': [0, 29],
}
我对Python很新,并且想知道,我如何阅读这本词典,以便我可以在比较输入数字的同时提取每个等级的下边界和上边界。当密钥有单个值时,我能够处理字典,但在这种情况下,我不知道如何编写代码。
答案 0 :(得分:2)
您可以使用bisect()
模块中的bisect
方法:
from bisect import bisect
grades='FEDCBA' #or you can use 'ABCDEF'[::-1]
score = 62
grades[bisect([30, 40, 50, 60, 70], score)]
#B
答案 1 :(得分:0)
if value >= grade_boundaries['A'][0] and value <= grade_boundaries['A'][1]:
print("value is in grade A")
如果您愿意,您也可以同时提取两个边界:
(lower_bound, upper_bound) = grade_boundaries['A']
如果您想一次比较所有内容:
for grade in grade_boundaries:
if value >= grade_boundaries[grade][0] and value <= grade_boundaries[grade][1]:
print("value is in grade " + grade)
答案 2 :(得分:0)
听起来你想从一个等级获得一个字母等级?如果是这样,这应该可以解决问题:
GRADE_BOUNDARIES = {
'A': [70, 100],
'B': [60, 69],
'C': [50, 59],
'D': [40, 49],
'E': [30, 39],
'F': [0, 29],
}
def get_grade(number_grade):
for letter, bounds in GRADE_BOUNDARIES.items():
if number_grade >= bounds[0] and number_grade <= bounds[1]:
return letter
raise ValueError('Invalid number grade')