首页 > 解决方案 > Python Dict:如何从 dicts 中获取有序的差异集?

问题描述

我正在尝试从以下两个字典中获取差异集:

dict1 = {'area':1, 'ip':1, 'device_name':1, 'max_value':1, 'min_value':1, 'ave_value':1}
dict2 = {'area':1, 'ip':1, 'device_name':1, 'max_value':1, 'min_value':1, 'ave_value':1, 'res_1':1, 'res_2':1, 'res_3':1, 'res_4':1, 'res_5':1}

我想得到这样的有序结果:

result = {'res_1', 'res_2', 'res_3', 'res_4', 'res_5'}

我找到了一种设置差异的方法:

result = dict2.keys() - dict1.keys()

但输出不是我想要的:

[output:]
{'res_3', 'res_1', 'res_4', 'res_2', 'res_5'}

不幸的是,它始终是随机顺序。

标签: pythondictionary

解决方案


您无法按顺序将事物存储在集合中,但您可以使用列表并自己轻松计算差异。使用列表推导巧妙地做到这一点:

result = [key for key in dict2 if key not in dict1]

key not in dict1是一个 O(1) 操作,所以整个事情都是 O(n),就像常规集差一样。


推荐阅读