为字典元素指定名称
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))
我有一个字典,其中元组作为键,浮点数作为值。我的代码看起来像
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))