如果值不存在,Python Dictionary返回请求的密钥

Nix*_*Nix 5 python python-2.7

我正在寻找一种简单的方法来从字典中获取值,如果不存在,则返回用户传入的密钥.

例如:

>>> 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'
Run Code Online (Sandbox Code Playgroud)

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

有没有简单的方法来做到这一点?或者我应该扩展dict并手动完成.

Mar*_*ers 16

我认为defaultdict这对你没有帮助,因为生成默认值的函数无法访问请求的密钥.

但是,您使用普通字典并使用get默认值:

>>> lookup = {}
>>> key = 'DNE'
>>> lookup.get(key, key)
'DNE'
Run Code Online (Sandbox Code Playgroud)


Moe*_*Moe 5

应该可以使用 lambda 函数

from collections import defaultdict
a = defaultdict((lambda : 'DNE'))
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我误读了这个问题。正如上面的评论已经说过的。要走的路是扩展 dict 类。

>>> class mydict(dict):
...     def __missing__(self,key):
...         return key
... 
>>> a = mydict()
>>> a['asd']
'asd'
Run Code Online (Sandbox Code Playgroud)