我想做的是比较两个字典:

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词典将具有与predictactual相同的键
但是它的值将是当前列表的set difference
set(v).difference(actual[k])-由于键相同,因此可以访问actual[k]并找到与当前键(v)的不同之处
最后,将具有差异的结果集转换为列表,以根据要求输出。

关于python - 比较两个字典键值并返回具有差异的新字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45786688/

10-13 07:11