如何制作三重等价字典?

如何制作三重等价字典?,第1张

概述我正在尝试在下图中的等级类别之间进行映射.然后我希望能够调用一个函数,将等级转换为等效格式的相同等级.例如: def convert(num, letter, gpa): """Converts a grade into an equivalent grade. The desired output will be specified by -1 and the grade fo 我正在尝试在下图中的等级类别之间进行映射.然后我希望能够调用一个函数,将等级转换为等效格式的相同等级.例如:
def convert(num,letter,gpa):    """Converts a grade into an equivalent grade. The desired output will be     specifIEd by -1 and the grade format not to be involved in the conversion     will be specifIEd by None. When converting to GPA,the minimum of the gpa     range will be returned."""    >>> convert(83,None,-1)    >>> 'A-'    >>>convert(-1,'B+',None)     >>>77

我想为等价创建三个并行列表,然后函数最终会使用一堆if语句.最好的方法是什么?

解决方法 我可能会做这样的事情,它避免了条件分支,并且很清楚你在转换时想要做什么.
class GradeRange:    def __init__(self,pct,ltr,gpa):        self.pct = pct        self.ltr = ltr        self.gpa = gpaclass Gradetable:    def __init__(self):        self.ranges = [            GradeRange(range(0,50),'F',0.0),GradeRange(range(50,53),'D-',0.7),GradeRange(range(53,57),'D',1.0),GradeRange(range(57,60),'D+',1.3),GradeRange(range(60,63),'C-',1.7),GradeRange(range(63,67),'C',2.0),GradeRange(range(67,70),'C+',2.3),GradeRange(range(70,73),'B-',2.7),GradeRange(range(73,77),'B',3.0),GradeRange(range(77,80),3.3),GradeRange(range(80,85),'A-',3.7),GradeRange(range(85,90),'A',4.0),GradeRange(range(90,101),'A+',]    def convert_pct(self,pct):        for r in self.ranges:            if pct in r.pct:                return r.ltr,r.gpa    def convert_ltr(self,ltr):        for r in self.ranges:            if r.ltr == ltr:                return r.pct[0],r.gpa    def convert_gpa(self,gpa):        for r in self.ranges:            if r.gpa == gpa:                return r.pct[0],r.ltr
总结

以上是内存溢出为你收集整理的如何制作三重等价字典?全部内容,希望文章能够帮你解决如何制作三重等价字典?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存