gpt4 book ai didi

python - 在 Python 中生成所有可能映射的列表

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

假设我们有一个映射 K -> V,其中定义域 K 是一个集合 ([1,2,3]) 并且共同定义域 V 从集合(['a', '公元前'])。是否有一种简洁的方法来枚举所有可能的映射(最好是字典列表或生成器):

例如。

[ { 1 : 'a', 2 : 'a', 3 : 'a' },
{ 1 : 'a', 2 : 'a', 3 : 'b' },
{ 1 : 'a', 2 : 'b', 3 : 'a' },
...
{ 1 : 'c', 2 : 'c', 3 : 'c' }
]

请注意,域的大小不固定,因此这种解决方案并不理想:

[ { 1 : x, 2 : y,  3 : z } for x in V for y in V for z in V ]

干杯

最佳答案

itertools.product 使用repeat 参数:

K = set([1, 2, 3])
V = set(['a', 'b', 'c'])
itertools.product(V, repeat=len(K))

然后您可以在理解中构造 dict:

(dict(zip(K, x)) for x in itertools.product(V, repeat=len(K)))

检查:

>>> len([dict(zip([1, 2, 3], x)) for x in itertools.product('abc', repeat=3)])
27

关于python - 在 Python 中生成所有可能映射的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009177/

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