我正在寻找一种简单的方法来从字典中获取值,如果不存在,则返回用户传入的密钥.
例如:
>>> 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)
应该可以使用 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)
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |