python - 比较python中的两个列表,只保留匹配项和不匹配项
问题描述
我正在尝试遍历两个元组列表并寻找匹配项。我想生成两个元组列表作为输出:一个包含匹配项(第一个值出现在两个列表中的元组)和一个不匹配(第一个值出现在一个列表中但不在另一个列表中的元组)。
我尝试通过在嵌套循环中迭代两个列表并比较那里的元组来实现这一点。但是,当我这样做时,生成的“不匹配”列表还包含匹配的元组,并且也出现在“匹配”列表中。
我试图避免这种情况。必须有更好的方法来做到这一点。任何帮助,将不胜感激。
下面是一个例子:
data1 = [
("Aaden", "3"),
("Aamir", "3"),
("Aarav", "3"),
("aaren", "3"),
("aarika", "3"),
("Adad", "3")
]
data2 = [
("Aaden", "3"),
("Aamir", "3"),
("Aarav", "3"),
("aaren", "3"),
("aarika", "3"),
("Aaron", "3"),
("Abaddon", "3"),
("abagael", "3"),
("abagail", "3"),
("Abatu", "3"),
("abbe", "3"),
("abbey", "3"),
("abbi", "3"),
("abbie", "3"),
("Abbot", "3"),
("Abbott", "3"),
("abby", "3"),
("abbye", "3"),
("Abdel", "3"),
("Abdiel", "3"),
("Abdul", "3"),
("Abdulkarim", "3"),
("Abdullah", "3"),
("Abduxuel", "3"),
("Abe", "3"),
("Abel", "3"),
("Abelard", "1"),
("abigael", "3"),
("abigail", "3"),
("abigale", "3"),
("Abigar", "3"),
("Abigor", "3"),
("Abner", "4"),
("abra", "3"),
("Abraham", "3"),
("Abram", "3"),
("Acacia", "3"),
("Ace", "3"),
("Achilles", "3"),
("Aclahayr", "3"),
("ada", "6"),
("awdad", "3"),
("awad", "3"),
("Ainiond", "3"),
("Adww", "3"),
("james","3")
]
match = []
no_match = []
for item1 in data1:
for item2 in data2:
if item1[0] == item2[0]:
match.append(item1)
else:
no_match.append(item1)
print('First List Count: {}'.format(len(data1)))
print('Second List Count: {}'.format(len(data2)))
print('Match Count: {}'.format(len(match)))
print('No Match Count: {}'.format(len(no_match)))
输出:
First List Count: 6
Second List Count: 46
Match Count: 5
No Match Count: 271
解决方案
您可能希望为此使用集合。您可以找到两个集合的交集 ( ) 的公共元&
组:
match = set(data1) & set(data2)
并且您可以获得具有对称差异或等效的非公共元素^
:
no_match = len(set(data1) ^ set(data2))
更多关于集合——附加链接中独特元素的无序集合。
推荐阅读
- javascript - 如何检查表单中是否至少选中了一个复选框?
- wpf - 为什么 CefSharp 自定义上下文菜单命令大部分时间都不起作用?
- python - HorizontalSilder (PyQt5) : 事件取决于位置 | 起始位置取决于过程
- angular - Angular 6:在 ngOnInit 中使用 @Input 的值
- r - 为什么我在计数和过滤后失去了我的 NA(dplyr)
- axapta - 如何获取从调用者表单中单击的控件?
- python - 在 Python 3 中打印当前时间
- python - Selenium API 在我的 Python 程序中找不到所需的元素
- java - 如何通过按钮更改操作栏上方的颜色?
- django - 当主机系统上只有 Nginx 时使用 Docker 的静态文件