如何修改Python’默认’字典,使其始终返回默认值
发布时间:2020-12-20 12:25:18 所属栏目:Python 来源:网络整理
导读:我正在使用它们来打印数据包中指定的IANA值的名称.因此,所有字典都具有相同的默认值“RESERVED”. 我不想使用d.get(键,默认)但是通过d [key]访问字典,这样如果键不在d中,它将返回默认值(对于所有字典都是相同的). 我不一定需要使用字典,但它们是直观的选择…
我正在使用它们来打印数据包中指定的IANA值的名称.因此,所有字典都具有相同的默认值“RESERVED”.
我不想使用d.get(键,默认)但是通过d [key]访问字典,这样如果键不在d中,它将返回默认值(对于所有字典都是相同的). 我不一定需要使用字典,但它们是直观的选择…… d = { 1..16 = "RESERVED",17 : "Foo",18 : "Bar,19..255: "INVALID" } 将是首选的解决方案 元组可能是另一种选择,但是我很容易抵消分配值的错误……(而且我的代码不会是“人类可读的”) 哦,是的,Python 2.4 解决方法
如果可以,请使用
Mario’s solution.
如果你不能,你只需要子类化类字典对象.现在,您可以通过直接从“dict”继承来实现,它将是快速有效的.对于不能从“dict”继承的旧Python版本,有“UserDict”,一个纯Python字典实现. 有了它,你会这样做: #!/usr/bin/env python # -*- coding= UTF-8 -*- import UserDict class DefaultDict(UserDict.UserDict) : default_value = 'RESERVED' def __getitem__(self,key) : return self.data.get(key,DefaultDict.default_value) d = DefaultDict() d["yes"] = True; print d["yes"] print d["no"] 请记住,“UserDict”比“dict”慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |