如何逐键对比两个Python字典并计算对应值的差值?
解决字典逐键对比求差值的问题
给定两个键完全相同的Python字典:
d1 = {'k1': {'a': 100}, 'k2': {'b': 200}, 'k3': {'b': 300}, 'k4': {'c': 400}} d2 = {'k1': {'a': 101}, 'k2': {'b': 200}, 'k3': {'b': 302}, 'k4': {'c': 399}}
要生成每个键对应子字典值的差值(取绝对值),并输出指定格式的结果,可以用字典推导式实现:
result = { key: {'diff': abs(next(iter(d2[key].values())) - next(iter(d1[key].values())))} for key in d1 } print(result)
运行上述代码后,输出结果为:
{'k1': {'diff': 1}, 'k2': {'diff': 0}, 'k3': {'diff': 2}, 'k4': {'diff': 1}}
代码说明
next(iter(d[key].values())):因为每个子字典只有一个键值对,用这个方法可以快速取出子字典中的数值,无需关心子字典的键名。abs(...):计算两个数值差值的绝对值,确保结果为非负数,符合示例中的输出要求。- 字典推导式遍历
d1的所有键(因两个字典键完全相同,遍历d2也可),逐个生成对应差值的结果项。
内容的提问来源于stack exchange,提问作者soumya-kole
相关产品推荐
相关产品推荐

