列表字典的笛卡尔积

列表字典的笛卡尔积,第1张

列表字典笛卡尔

好的,感谢@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之前防止键/值被排序。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5652527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存