• PythonMutableDict使用范例


    MutableDict 使用dict的抽象基类MutableDict,创建自定义dict

    from abc import ABC
    from enum import Enum
    from collections import defaultdict
    from collections import MutableMapping
    
    
    # 统计班级每个成绩等级的人数
    class GradeLevel(str, Enum):
        EXCELLENT = 'gte 95'
        GOOD = 'gte 85 and lt 95'
        NORMAL = 'gte 70 lt 85'
        PASS = 'gte 60 and lt 70'
        FAIL = 'lt 60'
    
    
    class GradeLevelDict(MutableMapping, ABC):
        def __init__(self):
            self.data = defaultdict(int)
    
        def __getitem__(self, key):
            return self.data[self.grade_level(key)]
    
        def __setitem__(self, key, value):
            self.data[self.grade_level(key)] = value
    
        def __delitem__(self, key):
            del self.data[key]
    
        def __iter__(self):
            return iter(self.data)
    
        def __len__(self):
            return len(self.data)
    
        def items(self):
            return sorted(self.data.items(), key=lambda x: list(GradeLevel).index(x[0]))
    
        def student_count(self):
            return sum(self.data.values())
    
        @staticmethod
        def grade_level(score):
            if score in list(GradeLevel):
                return score
            if score >= 95:
                return GradeLevel.EXCELLENT
            if 85 <= score < 95:
                return GradeLevel.GOOD
            if 70 <= score < 85:
                return GradeLevel.NORMAL
            if 60 <= score < 70:
                return GradeLevel.PASS
            else:
                return GradeLevel.FAIL
    
    
    if __name__ == '__main__':
        grade_lv_dic = GradeLevelDict()
        grade_lv_dic[99] += 1
        grade_lv_dic[55] += 1
        print()
    
    
  • 相关阅读:
    Java基础00-模块36
    Java基础00-反射35
    Java基础00-Stream流34
    Java基础00-函数式接口33
    Java基础00-方法引用32
    运用龙格库塔法解大雷洛数平板绕流问题
    LB 学习日记
    Numba学习日记 —— 2019-12-5
    文件的操作及相关异常的处理
    time模块的两个函数time.clock()和time.time()的区别
  • 原文地址:https://www.cnblogs.com/suguangti/p/16167510.html
Copyright © 2020-2023  润新知