如果值不存在,Python字典返回请求的键

2024-09-28 22:37:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种简单的方法,能够从字典中获取值,如果没有,则返回用户传入的键。在

例如:

>>> lookup = defaultdict(magic)
>>> print lookup['DNE']
'DNE'
>>> print lookup.get('DNE')
'DNE'
>>> print lookup['exists']
'some other value'
>>> print lookup.get('exists')
'some other value'

这些总是字符串,但基本上我正在创建一个语言映射,需要一种简单的方法来获取值,如果存在,则返回它,否则返回键。在

有什么简单的方法吗?或者我应该扩展dict并手动执行它。在


Tags: 方法字符串用户语言get字典valuemagic
3条回答

应该可以使用lambda函数

from collections import defaultdict
a = defaultdict((lambda : 'DNE'))

编辑:对不起,我把问题读错了。正如上述评论所说。方法是扩展dict类。在

^{pr2}$

这至少可以在Python 2.7下运行:

from collections import defaultdict

class KeyAwareDefaultDict(defaultdict):
    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError(key)
        self[key] = value = self.default_factory(key)
        return value

lookup = KeyAwareDefaultDict((lambda key: key))

与标准的dict不同,默认dict.get()似乎也调用了“缺少”,因此它为扩展打下了更好的基础。在

我不认为defaultdict在这里帮不了你,因为生成默认值的函数没有访问被请求键的权限。在

但是,您使用普通字典并使用带有默认值的^{}

>>> lookup = {}
>>> key = 'DNE'
>>> lookup.get(key, key)
'DNE'

相关问题 更多 >