【发布时间】:2025-11-28 04:40:01
【问题描述】:
我正在尝试比较两个值,一个来自list1,另一个来自list2。每个值都存储在这些列表的字典中。
正在从 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']]
【问题讨论】:
-
我不完全理解你想要做什么,但一般来说,当你希望你的列表理解同时迭代两个列表时,你应该这样做
[some_expression_goes_here for a,b in zip(list1, list2)] -
你确定你最后一行的语法吗?这会在
list1 y附近抛出一个SyntaxError -
我只想提一下,列表推导不应该仅仅因为它花哨而被使用,而是为了使代码更具可读性和组织性,它们并不比普通的 for 循环快。如果它们变得太乱,那么使用常规的 for 循环可能是个好主意。
标签: python csv dictionary list-comprehension dictionary-comprehension