对某些(不是全部)字典值执行操作

问题描述 投票:1回答:2

我有一个名为spectradict的字典,它由5个不同的键组成(每个键有多个值),我想将4个键下的每个值乘以一些常数A.我已经想出如何将所有值相乘(在所有键下)由常数:

spectradict.update((x, y*A) for x, y in spectradict.items())

但我只想将spectradict['0.001']spectradict['0.004']spectradict['0.01']spectradict['0.02']下的值乘以A.我希望spectradict['E']值保持不变。我怎么能做到这一点?

python dictionary key-value
2个回答
1
投票

您可以通过在其末尾附加if <test>来对生成器函数执行条件检查。

spectradict.update((k, v*A) for k, v in spectradict.items() if k != 'E')
# or, inclusive test using a set
spectradict.update((k, v*A) for k, v in spectradict.items() if k in {'0.001', '0.004', '0.01', '0.02'})

1
投票

您可以明确列出密钥:

#UNTESTED
spectradict.update((x, spectradict[x]*A) for x in ['0.001', '0.004', '0.01', '0.02'])

或者,你可以只排除E

#UNTESTED
spectradict.update((x, y*A) for x, y in spectradict.items() if x != 'E')
© www.soinside.com 2019 - 2024. All rights reserved.