为字典元素指定名称

Assigning Name to Dictionary Element

我有一个字典,其中元组作为键,浮点数作为值。我的代码看起来像

For each longtuplekey in dictionary:
    dictionary[longtuplekey]+=func(dictionary[longtuplekey])
    dictionary[longtyplekey]*=func2(dictionary[longtuplekey])

我希望将其缩短为

For each longtuplekey in dictionary:
    val=dictionary[longtuplekey]
    val+=func(val)
    val*=func2(val)

当然除了上面的代码将val定义为一个不可变的float,没有修改字典条目。有办法吗?

编辑:我选择了 "No, there's no explicit way to do this" 的答案并提供了一个替代方案。如果有人想出办法完全按照我的要求做,我会更改答案。

没有万无一失的方法可以让 Python 认识到对 val 的赋值也应该更新字典中的值。如果你想更新字典,你必须重新分配给它。从好的方面来说,您可以通过遍历字典的 items() 而不仅仅是其键来减少所需 dictionary[longtuplekey] 用法的次数。

for longtuplekey, val in d.items():
    val += func(val)
    val *= func2(val)
    d[longtuplekey] = val

你可以这样做:

for longtuplekey in dictionary:
    val = dictionary[longtuplekey]
    val += func(val)
    val *= func2(val)
    dictionary[longtuplekey] = val

这里不需要使用 2 个赋值,只需在 imul 赋值中执行两个函数并使用 dict.items 同时循环键和值:

for longtuplekey, val in dictionary.items():
    dictionary[longtuplekey] *= func2(val + func(val))