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

时间:2018-03-05 22:40:49

标签: python dictionary key-value

我有一个名为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']值保持不变不变。我怎么能做到这一点?

2 个答案:

答案 0 :(得分: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 :(得分: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')