对某些(不是全部)字典值执行操作
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')
我有一本名为 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')