好的,感谢@dfan告诉我我在错误的位置查看。我现在知道了:
from itertools import productdef my_product(inp): return (dict(zip(inp.keys(), values)) for values in product(*inp.values())
编辑
:经过多年的Python经验,我认为一个更好的解决方案是接受
kwargs输入,而不是输入字典。呼叫样式与原始呼叫样式更加类似
itertools.product。另外,我认为编写生成器函数(而不是返回生成器表达式的函数)会使代码更清晰。所以:
def product_dict(**kwargs): keys = kwargs.keys() vals = kwargs.values() for instance in itertools.product(*vals): yield dict(zip(keys, instance))
如果你需要在一个字典来传递,
list(product_dict(**mydict))。使用
kwargs而不是任意输入类的一个显着变化是,它至少在Python
3.6之前防止键/值被排序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)