加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何修改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”慢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读