获取python中两个字典之间的差异(以值为单位)

cel*_*nus 6 python comparison dictionary difference

假设您有2个词典,A并且B键可以相同但值(整数)将不同.你如何比较2个词典,以便如果键匹配你得到差异(例如,如果x是键的值,"A"并且y是键的值,"B"那么结果应该是x-y)2个字典之间的结果(最好是作为新词典) .

理想情况下,您还可以比较增益百分比(两个字典之间的百分比变化百分比,这两个字典是特定时间的数字快照).

Wri*_*ght 7

鉴于两本字典,A以及B可能/可能不会有相同的键,你可以这样做:

A = {'a':5, 't':4, 'd':2}
B = {'s':11, 'a':4, 'd': 0}

C = {x: A[x] - B[x] for x in A if x in B}
Run Code Online (Sandbox Code Playgroud)

这只会减去两个词典中相同的键.


Cor*_*mer 5

您可以使用dict推导循环遍历键,然后从每个原始dict.

>>> a = {'a': 5, 'b': 3, 'c': 12}
>>> b = {'a': 1, 'b': 7, 'c': 19}
>>> {k: b[k] - a[k] for k in a}
{'a': -4, 'b': 4, 'c': 7}
Run Code Online (Sandbox Code Playgroud)

这假设两者dict具有完全相同的密钥。否则,您将不得不考虑如果一个键中有键dict而不是另一个键(可能是一些默认值?)

否则,如果您只想评估共享密钥,则可以使用密钥的集合交集

>>> {k: b[k] - a[k] for k in a.keys() & b.keys()}
{'a': -4, 'b': 4, 'c': 7}
Run Code Online (Sandbox Code Playgroud)