是否有 shorthand 用于使用为函数中的参数分配的相同变量?
Is there a shorthand for using the same variable being assigned for the argument in a function?
有没有更快的写法:
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
你可以通过在字典上使用 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
方法的描述:
- D.update([E, ]**F) -> None。从 dict/iterable E 和 F.
更新 D
- 如果 E 存在并且有 .keys() 方法,则执行: for k in E: D[k] = E[k]
- 如果 E 存在并且缺少 .keys() 方法,则执行: for k, v in E: D[k] = v
- 在任何一种情况下,后面都是:for k in F: D[k] = F[k]
因此,如果密钥存在,它将更新它,如果不存在,它将创建它。
这个单行作业怎么样?
dict.update({key: foo(dict[key]) for key in ['i_dont_want_to_type_this_twice']})
或者,更新整个字典:
dict = {k: foo(v) for k, v in dict.items()}
我认为对此没有任何内置或标准库功能。最惯用的做法可能是定义你自己的包装函数,比如
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 以来已被弃用,所以不会'它不会有太大的伤害。)
有没有更快的写法:
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
你可以通过在字典上使用 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
方法的描述:
- D.update([E, ]**F) -> None。从 dict/iterable E 和 F. 更新 D
- 如果 E 存在并且有 .keys() 方法,则执行: for k in E: D[k] = E[k]
- 如果 E 存在并且缺少 .keys() 方法,则执行: for k, v in E: D[k] = v
- 在任何一种情况下,后面都是:for k in F: D[k] = F[k]
因此,如果密钥存在,它将更新它,如果不存在,它将创建它。
这个单行作业怎么样?
dict.update({key: foo(dict[key]) for key in ['i_dont_want_to_type_this_twice']})
或者,更新整个字典:
dict = {k: foo(v) for k, v in dict.items()}
我认为对此没有任何内置或标准库功能。最惯用的做法可能是定义你自己的包装函数,比如
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 以来已被弃用,所以不会'它不会有太大的伤害。)