如何修改Python’默认’字典,使其始终返回默认值
作者:互联网
我正在使用它们来打印数据包中指定的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”慢.
标签:python,dictionary,python-2-4 来源: https://codeday.me/bug/20190715/1464040.html