如何在Python中比较两个列表中的两个值

如何在Python中比较两个列表中的两个值,python,csv,dictionary,list-comprehension,dictionary-comprehension,Python,Csv,Dictionary,List Comprehension,Dictionary Comprehension,我试图比较两个值,一个来自列表1,另一个来自列表2。每个值都存储在这些列表中的字典中 正在从csv文件中读取数据 目前,我的代码只比较第一个值,不进行迭代: import csv list1 = [] list2 = [] reader1 = csv.DictReader(open('file1.csv')) reader2 = csv.DictReader(open('file2.csv')) list1 = [x for x in reader1] list2 = [x for

我试图比较两个值,一个来自列表1,另一个来自列表2。每个值都存储在这些列表中的字典中

正在从csv文件中读取数据

目前,我的代码只比较第一个值,不进行迭代:

import csv    

list1 = []
list2 = []

reader1 = csv.DictReader(open('file1.csv'))
reader2 = csv.DictReader(open('file2.csv'))

list1 = [x for x in reader1]
list2 = [x for x in reader2]

print [x['MyMail'] for x in list1 for y in list2 if x['MyMail']==y['Email']]
您想为此使用一个集合

s1 = set([i['MyMail'].lower() for i in reader1 if i['MyMail']])
s2 = set([i['Email'].lower() for i in reader2 if i['Email']])

common_emails = s1 & s2

我不完全理解你想做什么,但一般来说,当你想让你的列表理解在两个列表上并行迭代时,你应该做[ziplist1,list2中a,b的一些表达式]你确定最后一行的语法吗?这在列表1附近抛出了一个语法错误。我只想指出,列表理解不应该仅仅因为它很奇特而被使用,但为了使代码更可读和更有组织,它们并不比普通的for循环快。如果它们变得太凌乱,使用常规for循环可能是个好主意。