自定义dict类

通过继承 collections.UserDict 来实现自己的dict类,通过重写一些特殊方法来定制自己的dict的功能

import collections

class StrKeyDict(collections.UserDict):
    """ 
    A customized class inherted fron UserDict,
    get value by converting int type of key to str.
    E.g..

        mydict = StrKeyDict({'1':'one'})
        mydict[1]
    output: 'one'
    """
    def __missing__(self, key):
        if isinstance(key, str):
            raise KeyError(key)
        return self[str(key)]

    def __contains__(self, key):
        return str(key) in self.data
    
    def __setitem__(self, key, item):
        self.data[str(key)] = item


if __name__ == '__main__':
    mydict = StrKeyDict((('1','one'),('2','two')))
    print(mydict[1])
    print(1 in mydict)
    mydict[3] = 'three'
    print(mydict)

这个字典类实现了,通过int类型键取不到值时,将键转换为str类型取值。同时也包括, set 和 in的操作,有相应的功能。
源自于流畅的python

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,167评论 18 399
  • 下午我和妈妈去东花园玩了,晚上爸爸请我们一家去吃大虾,我在吃大虾的地方是小二上虾结果果然不出我所料,在我...
    Le0nard0阅读 1,630评论 0 2
  • 她是坠入凡间的天使,因妈妈的爱重生 摄影最重要的不是相机 而在于爱、创意和技巧 今天我们讲一个小女孩的故事 新西兰...
    色谱沙龙阅读 4,185评论 0 1
  • 7.21 星期五 晴(98) 写了一个多小时的作业,儿子没有要休息的意思,于是提醒儿子该休息会了,要注...
    王界程阅读 1,328评论 0 0

友情链接更多精彩内容