python - 如何从列表理解中的单行中提取两个元组?

标签 python iterator list-comprehension

我正在尝试完成一项相当简单的任务:我正在读取一个 csv 文件,该文件在第 0 列中包含一个 ID,在第 2 列和第 3 列中包含与该 ID 关联的两个文本。我现在想要形成一个包含以下元组的列表(ID、文本)。然而,不知何故,我无法将其纳入单个列表理解中。这是我到目前为止所拥有的:

import csv

with open(filename) as csvfile:

    reader = csv.reader(csvfile, delimiter=';')
    next(reader)

    rows = [(row[0], row[2]) for row in reader]     
    rows.extend([(row[0], row[3]) for row in reader])

问题是 extend 不起作用,因为 reader 已经迭代了 ...

关于如何在一个列表理解中做到这一点有什么建议吗?

最佳答案

您可以进行第二次迭代:

rows = [value for row in reader
        for value in [(row[0], row[2]), (row[0], row[3])]]

关于python - 如何从列表理解中的单行中提取两个元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927077/

相关文章:

python - 使用 SQLAlchemy 的多列键

python - python中具有多个键的字典

javascript - 使用身份证号码隐藏下拉菜单

python - 在 __next__() 中修改对象之前返回对象

rust - 从函数中有效地返回 1-9 个字节

python - 迭代Python列表的列表并删除每个子列表的最终索引,无需导入

python - 根据列表中成员的可用性过滤元组列表

python - 理解列表理解

python - Redshift 中的长真空

css - 在 Sass 中动态生成类名和 CSS 属性