gpt4 book ai didi

python - 函数中的可变循环数(python)

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:42 26 4
gpt4 key购买 nike

这是我想做的一个例子:

d1 = {'a':1,'b':2,'c':3}
d2 = {'aa':11,'bb':22,'cc':33}
d3 = {'aaa':111,'bbb':222,'ccc':333}

def nLoop(*args):

n = len(args)

if n == 1:
for k0,v0 in args[0].iteritems():
print k0, v0

if n == 2:
for k0,v0 in args[0].iteritems():
for k1,v1 in args[1].iteritems():
print k0, v0, k1, v1

if n == 3:
for k0,v0 in args[0].iteritems():
for k1,v1 in args[1].iteritems():
for k2,v2 in args[2].iteritems():
print k0, v0, k1, v1, k2, v2

nLoop(d1,d2,d3)

我的问题是:有没有一些方法可以在没有 if 条件的情况下做到这一点?也许使用装饰器?

最佳答案

您可以将可变参数列表传递给 itertools.product(使用生成器将字典转换为它们的项目),然后打印扁平化结果(因为 product返回元组的元组):

from __future__ import print_function
import itertools

d1 = {'a':1,'b':2,'c':3}
d2 = {'aa':11,'bb':22,'cc':33}
d3 = {'aaa':111,'bbb':222,'ccc':333}


def nLoop(*args):
for t in itertools.product(*(a.items() for a in args)):
print(*(x for a in t for x in a))

nLoop(d1,d2,d3)

这个新的 nLoop 函数的输出与您的相同(如果不考虑顺序,因为字典顺序可能会在运行之间发生变化)

请注意,这是一个兼容 Python 3 的解决方案,但也适用于 Python 2。

关于python - 函数中的可变循环数(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49689424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com