【问题标题】:How to extract two tuples from a single row in a list comprehension?如何从列表理解中的单行中提取两个元组?
【发布时间】:2015-10-03 20:18:50
【问题描述】:

我正在尝试完成一个相当简单的任务:我正在读取一个 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 已经被迭代了...

关于如何在一个列表理解中做到这一点的任何建议?

【问题讨论】:

    标签: python iterator list-comprehension


    【解决方案1】:

    您可以进行第二次迭代:

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

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 2011-07-19
      • 2014-12-06
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      相关资源
      最近更新 更多