我可以连续迭代几个dicts而不合并它们吗?

时间:2011-11-16 20:36:29

标签: python dictionary for-loop

在python中,假设我有三个词:

d1, d2, d3 = {...}, {...}, {...}

我需要遍历每一个并执行相同的操作:

for k, v in d1.iteritems():
    do_some_stuff(k, v)
for k, v in d3.iteritems():
    do_some_stuff(k, v)
for k, v in d3.iteritems():
    do_some_stuff(k, v)

有没有办法在一个循环中执行此操作,以便每个字典连续迭代?像这样的东西,但语法明显不正确:

for k, v in d1.iteritems(), d2.iteritems(), d3.iteritems():
    do_some_stuff(k, v)

想要合并字典。我能想到的最好的是下面的嵌套循环,但似乎应该有“更多的pythonic,单循环方式。”

for d in (d1, d2, d3):
    for k, v in d.iteritems():
        do_some_stuff(k, v)

1 个答案:

答案 0 :(得分:10)

您想要chain

from itertools import chain

for k,v in chain(d1.iteritems(), d2.iteritems(), d3.iteritems()):
    do_some_stuff(k, v)

或更一般

ds = d1,d2,d3
for k,v in chain.from_iterable(d.iteritems() for d in ds):
    do_some_stuff(k, v)