我想做的是比较两个字典:
predict = {'eggs': [1,2],'ham': [1,2,3], 'sausage': [1,2,3]}
actual = {'eggs': [2], 'ham': [1,2]}
并返回一个新的差异字典:
difference = {'eggs': [1],'ham': [3], 'sausage': [1,2,3]}
对于大量数据,什么是有效的方法?谢谢。
最佳答案
您可以结合set.difference()
和dict
理解:
>>> predict = {'eggs': [1,2],'ham': [1,2,3]}
>>> actual = {'eggs': [2], 'ham': [1,2]}
>>> difference = {k: list(set(v).difference(actual[k])) if k in actual else v for k, v in predict.items()}
{'eggs': [1], 'ham': [3]}
说明:
您遍历
predict
键值对新的
difference
词典将具有与predict
和actual
相同的键但是它的值将是当前列表的
set difference
set(v).difference(actual[k])
-由于键相同,因此可以访问actual[k]
并找到与当前键(v
)的不同之处最后,将具有差异的结果集转换为列表,以根据要求输出。
关于python - 比较两个字典键值并返回具有差异的新字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45786688/