有更快的方式来写这个:
def foo():
# What happens in here is irrelevant.
return new_value
dict['i_dont_want_to_type_this_twice'] = foo(dict['i_dont_want_to_type_this_twice'])
与使用x += 1
答案 0 :(得分:1)
您可以在字典上使用update
来执行此类操作。
d.update(a=foo(d.get('a', 0)))
完整演示:
d = {'a': 5}
def foo(val):
val += 100
return val
d.update(a=foo(d.get('a', 0)))
print(d) # outputs {'a': 105}
从字典update
方法的描述:
因此,如果密钥存在,它将更新它,如果不存在,它将创建它。
答案 1 :(得分:1)
这对单班任务怎么样?
Entity
或者,更新整个字典:
dict.update({key: foo(dict[key]) for key in ['i_dont_want_to_type_this_twice']})
答案 2 :(得分:1)
我认为没有任何内置或标准库功能。最惯用的事情可能是定义自己的包装函数,例如
def transform(d, k, f):
d[k] = f(d[k])
然后像这样使用它(请注意,我已将dict
重命名为mydict
以避免屏蔽内置内容:
transform(mydict, 'i_dont_want_to_type_this_twice', foo)
(我认为apply()
会为此制作一个不错的名称,但如果您使用的是Python 2,它会内置。虽然它自2.3以来已被弃用,所以它不会造成很大的伤害。)