假设给你两个字典A
和B
,它们的键可以相同,但值(整数)将不同。如何比较这两个字典,以便如果键匹配,则获得差异(例如,如果x
是来自键"A"
的值,y
是来自键"B"
的值,则结果应为x-y
),并将其作为结果返回(最好作为一个新字典)。
理想情况下,您还可以比较百分比增益(两个字典之间值的百分比变化,这些字典是特定时间点上的快照)。
假设给你两个字典A
和B
,它们的键可以相同,但值(整数)将不同。如何比较这两个字典,以便如果键匹配,则获得差异(例如,如果x
是来自键"A"
的值,y
是来自键"B"
的值,则结果应为x-y
),并将其作为结果返回(最好作为一个新字典)。
理想情况下,您还可以比较百分比增益(两个字典之间值的百分比变化,这些字典是特定时间点上的快照)。
给定两个字典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}
这只减去两个字典中相同的键。
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}
dict
具有完全相同的键。否则,您需要考虑如果一个dict
中有而另一个没有键(也许是一些默认值)时期望的行为是什么。>>> {k: b[k] - a[k] for k in a.keys() & b.keys()}
{'a': -4, 'b': 4, 'c': 7}
def difference_dict(Dict_A, Dict_B):
output_dict = {}
for key in Dict_A.keys():
if key in Dict_B.keys():
output_dict[key] = abs(Dict_A[key] - Dict_B[key])
return output_dict
>>> Dict_A = {'a': 4, 'b': 3, 'c':7}
>>> Dict_B = {'a': 3, 'c': 23, 'd': 2}
>>> Diff = difference_dict(Dict_A, Dict_B)
>>> Diff
{'a': 1, 'c': 16}
def difference_dict(Dict_A, Dict_B):
output_dict = {key: abs(Dict_A[key] - Dict_B[key]) for key in Dict_A.keys() if key in Dict_B.keys()}
return output_dict
这里有一个针对此情况的Python包:
https://dictdiffer.readthedocs.io/en/latest/
from dictdiffer import diff
print(list(diff(a, b)))
这样就可以解决问题了。
new_dict={}
for key in A:
if key in B:
new_dict[key] = A[key] - B[key]
……我们可以将其适配到一行中
new_dict = { key : A[key] - B[key] for key in A if key in B }