【Python】查找两个表格是否存在相同元素

其实就是字典的应用,把其中一个表格做成字典(将需要查询的元素设为字典的键),然后读取另一个表格逐个在字典中查找

表1:

表2:

import openpyxl

wb1 = openpyxl.load_workbook(r"C:\Users\Lenovo\Desktop\表1.xlsx")
ws1 = wb1["Sheet1"]
wb2 = openpyxl.load_workbook(r"C:\Users\Lenovo\Desktop\表2.xlsx")
ws2 = wb2["Sheet1"]

dict = {}
for row in ws1.iter_rows(min_row = 2,values_only=True):#按行遍历 ,第2行开始
    dict[row[0]]=[row[0],row[1],row[2],row[3],row[4]] #字典 {'张三': ['张三', '男', 202501, 21, 1], '李四': ['李四', '男', 202502, 22, 2], '王五': ['王五', '女', 202503, 23, 3], '赵六': ['赵六', '女', 202504, 24, 4]}

num = 1
for row in ws2.iter_rows(min_row = 2,values_only=True):#按行遍历
    num += 1 #行号
    if row[0] in dict:#如果需要查询的元素在字典中(将需要查询的元素设为字典的键)
        print(num,row[0],row[1],row[2],row[3],row[4]) #行号 姓名 性别 学号 年纪 班级

结果:

另外,多个条件的话,可以把键做成元组,如:

dict1  =  {("学生1",1001):[11,22,33],("学生3",1002):[111,222,333]}
dict2  =  {("学生2",1001):[44,55,66],("学生4",1001):[1111,2222,3333]}

for i in dict1:
    for j in dict2:
        if i[1] == j[1]: #判断字典的 第二个键 是否相等
            print(j,j[0],j[1],dict2[j]) #字典的键(元组),键1,键2,字典的值

 

posted @ 2025-01-24 16:48  山鬼谣`  阅读(41)  评论(0)    收藏  举报