如何通过独家措施更新字典?

时间:2018-02-25 15:07:01

标签: python python-3.x dictionary

我要做的是创建一个dict中不存在的键...
我能想到的最好方法是:

>>> d = dict( a = 'test' )
>>> d['a'] = d.get('a', 'default' )

>>> if 'a' not in d: d['a'] = 'default'

我遇到的问题只不过是一个小麻烦,但事实上我必须指定'a'两次。

我正在尝试不定义一个函数,因为这个操作很简单...
我只是想知道,有更好的内置方法吗?

1 个答案:

答案 0 :(得分:2)

您可以测试密钥是否尚未存在:

if 'a' not in d:
    d['a'] = 'default'

这不会绕过密钥重复(通过使用变量可以很容易地解决),但至少避免设置密钥(如果密钥已经存在)。

如果您的真正目标是访问当前值并设置默认值(如果尚未显示),请使用dict.setdefault()

value = d.setdefault('a', 'default')

这将测试密钥,设置默认值,并返回密钥的值,一步完成。

考虑到首先执行默认值表达式,dict.setdefault()不适合创建默认值很昂贵或有副作用的地方。