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