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

Perform operation on some (not all) dictionary values

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

您可以通过在生成函数的末尾附加 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'})

您可以明确列出键:

#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')