【问题标题】:How to compare two values from two lists in Python如何在 Python 中比较两个列表中的两个值
【发布时间】: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


【解决方案1】:

您想为此使用set

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

【讨论】:

    最近更新 更多