如何迭代两个不同的可迭代对象

时间:2015-08-19 20:56:50

标签: python

我有以下代码:

reader = csv.DictReader(f, delimiter='\x01', lineterminator="\x02")
for line in (reader + my_dict_of_values):
    do_something()

有没有一种方法可以迭代两种不同的类型,如上所述而不调用另一个函数?否则我得到:TypeError: unsupported operand type(s) for +: 'instance' and 'dict'

2 个答案:

答案 0 :(得分:4)

这应该做你想要的:

import csv

from itertools import chain

reader = csv.DictReader(f, delimiter='\x01', lineterminator="\x02")
my_dict_of_values = {}  # whatever goes here

for line in chain(reader, my_dict_of_values):
    do_something(line)

答案 1 :(得分:0)

  

所以你想迭代读者然后迭代my_dict_of_values?在这种情况下听起来像两个for循环。

     
    

确切地说 - 我在for循环中只有大约100行代码,所以如果可能的话,想把它压缩成一个for循环

  

你需要做的是让你的循环体成为一个功能。然后你可以在两个循环中使用它。变化:

for line in reader:
    [100 lines of code]

为:

def do_something(line):
    [100 lines of code]

for line in reader:
    do_something(line)
for key in my_dict_of_values:
    do_something(key)