python - 比较两个具有特定值的列表以读取
问题描述
我有两个清单
list1 = ['01:15', 'abc', '01:15', 'def', '01:45', 'ghi' ]
list2 = ['01:15', 'abc', '01:15', 'uvz', '01:45', 'ghi' ]
当我遍历列表时
list_difference = []
for item in list1:
if item not in list2:
list_difference.append(item)
我设法得到了区别,但我也需要时间,因为它是一个单独的项目,'uvz'
对我来说,列表中有几千个条目对我没有任何意义。我试图将它转换为字典,但它被最后一个 key:value 覆盖{'01:15' : 'def'}
。
解决方案
将两个列表转换为元组集合,然后使用集合差分运算符。
set1 = set((list1[i], list1[i+1]) for i in range(0, len(list1), 2))
set2 = set((list2[i], list2[i+1]) for i in range(0, len(list2), 2))
list_difference = list(set1 - set2)
推荐阅读
- python - RPi.GPIO add_event_detect 有时会被忽略
- javascript - 在 js 和 nodejs 中处理异步等待和承诺有一些问题
- git - 无法在 Git for Windows 10 中永久设置 GIT_SSH 变量
- c - 如何在 MacOS Clion 中安装库
- python - Julia 的 `@edit` 宏的 Python 等价物是什么?
- python - 根据列中的字符串向 Matplotlib 添加图例
- c - 我的代码可以完美编译和执行,但其中有一部分就像在执行期间没有读取
- javascript - 显示数字的 32 位版本
- javascript - 如何使用 AngularJS v1.5+ 和 angular-ui-router v1.0+ 允许将视图定义为模板和控制器?
- java - 编写一个程序,打印一个表格,其中包含从 1 到 40 的整数及其平方、平方根和倒数