python - 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'}
不幸的是,它始终是随机顺序。
解决方案
您无法按顺序将事物存储在集合中,但您可以使用列表并自己轻松计算差异。使用列表推导巧妙地做到这一点:
result = [key for key in dict2 if key not in dict1]
key not in dict1
是一个 O(1) 操作,所以整个事情都是 O(n),就像常规集差一样。
推荐阅读
- r - 如何在R中的矩阵中上移每一列的值
- c# - 有没有办法阻止包装面板中的项目“过早”包装?
- javascript - 从 React Client 获取 post api 到 express 服务器导致错误
- ruby-on-rails - 列出关联对象中的方法检索到的对象时避免 N+1 的最佳实践
- python - 文件下载期间的 Gunicorn 超时
- android - 生成的文件(Dagger、LiveData)出现在错误的分支上,如果我删除它们会重新生成
- python - 使用相对路径从另一个 py 脚本运行 py 脚本
- exception - OCaml:对大型程序使用 `try` 和 `with`
- promise - Observable 中的 Promise 不返回值
- google-chrome - 正确关闭后可能与 chrome 扩展内容脚本发生内存泄漏