Python 如何在dict中创建可能的组合列表?

Python 如何在dict中创建可能的组合列表?,python,dictionary,combinations,Python,Dictionary,Combinations,我有一个python dict,如下所示: test = {"a": value_of_a,"b": value_of_b, "c": value_of_c} 其中,a的值、b的值、c的值都是变量,可以取3个值: 1,2或3表示a的值 “a”、“b”或“c”表示b的值 45180250用于vaulue\u of\u c 我想创建一个dict列表,其中每个dict包含这些值的一个组合。例如,dict可以如下所示: test1 = {"a" : 2, "b" : "a", "c" : 45 }

我有一个python dict,如下所示:

test = {"a": value_of_a,"b": value_of_b, "c": value_of_c}
其中,
a的值、b的值、c的值都是变量,可以取3个值:

  • 1,2或3表示a的

  • “a”、“b”或“c”表示b的

  • 45180250用于
    vaulue\u of\u c

我想创建一个dict列表,其中每个dict包含这些值的一个组合。例如,dict可以如下所示:

test1 = {"a" : 2, "b" : "a", "c" : 45 }
test2 = {"a" : 3, "b" : "a", "c" : 45 }
等等

我不知道如何解决这个问题

注意:这些值只是为了简化任务,原始任务中的每一个都有更多的键和值,但是如果我可以为这些键和值执行这些操作,那么我可以为原始任务执行这些操作。

我建议使用特殊的。请看一看页面底部的例子——这里有一些有趣的例子

>>> import itertools

>>> list(itertools.combinations([1,2,3], 2))
[(1, 2), (1, 3), (2, 3)]

请指定是否需要所有可能的组合或从值列表中随机选择的元素。如果你想要每个组合,请使用@Eugene Litsisky的解决方案。如果您正在寻找一组从值列表中随机抽取值的词典,则可以使用

享受:

结果:

{'a': 1, 'c': 45, 'b': 'a'}
{'a': 1, 'c': 45, 'b': 'b'}
{'a': 1, 'c': 45, 'b': 'c'}
{'a': 1, 'c': 180, 'b': 'a'}
{'a': 1, 'c': 180, 'b': 'b'}
{'a': 1, 'c': 180, 'b': 'c'}
{'a': 1, 'c': 250, 'b': 'a'}
{'a': 1, 'c': 250, 'b': 'b'}
{'a': 1, 'c': 250, 'b': 'c'}
{'a': 2, 'c': 45, 'b': 'a'}
{'a': 2, 'c': 45, 'b': 'b'}
{'a': 2, 'c': 45, 'b': 'c'}
{'a': 2, 'c': 180, 'b': 'a'}
{'a': 2, 'c': 180, 'b': 'b'}
{'a': 2, 'c': 180, 'b': 'c'}
{'a': 2, 'c': 250, 'b': 'a'}
{'a': 2, 'c': 250, 'b': 'b'}
{'a': 2, 'c': 250, 'b': 'c'}
{'a': 3, 'c': 45, 'b': 'a'}
{'a': 3, 'c': 45, 'b': 'b'}
{'a': 3, 'c': 45, 'b': 'c'}
{'a': 3, 'c': 180, 'b': 'a'}
{'a': 3, 'c': 180, 'b': 'b'}
{'a': 3, 'c': 180, 'b': 'c'}
{'a': 3, 'c': 250, 'b': 'a'}
{'a': 3, 'c': 250, 'b': 'b'}
{'a': 3, 'c': 250, 'b': 'c'}
我将它实现为一个生成器,因为它可以节省内存。如果您需要确切的列表,可以执行以下操作:

lst = list(iterate_values(S))

你是说随机选择的吗?或者每种可能的组合?
用于itertools.product(范围(1,4),'abc',(45180250)):print({'a':a'b':b,'c':c})
{'a': 1, 'c': 45, 'b': 'a'}
{'a': 1, 'c': 45, 'b': 'b'}
{'a': 1, 'c': 45, 'b': 'c'}
{'a': 1, 'c': 180, 'b': 'a'}
{'a': 1, 'c': 180, 'b': 'b'}
{'a': 1, 'c': 180, 'b': 'c'}
{'a': 1, 'c': 250, 'b': 'a'}
{'a': 1, 'c': 250, 'b': 'b'}
{'a': 1, 'c': 250, 'b': 'c'}
{'a': 2, 'c': 45, 'b': 'a'}
{'a': 2, 'c': 45, 'b': 'b'}
{'a': 2, 'c': 45, 'b': 'c'}
{'a': 2, 'c': 180, 'b': 'a'}
{'a': 2, 'c': 180, 'b': 'b'}
{'a': 2, 'c': 180, 'b': 'c'}
{'a': 2, 'c': 250, 'b': 'a'}
{'a': 2, 'c': 250, 'b': 'b'}
{'a': 2, 'c': 250, 'b': 'c'}
{'a': 3, 'c': 45, 'b': 'a'}
{'a': 3, 'c': 45, 'b': 'b'}
{'a': 3, 'c': 45, 'b': 'c'}
{'a': 3, 'c': 180, 'b': 'a'}
{'a': 3, 'c': 180, 'b': 'b'}
{'a': 3, 'c': 180, 'b': 'c'}
{'a': 3, 'c': 250, 'b': 'a'}
{'a': 3, 'c': 250, 'b': 'b'}
{'a': 3, 'c': 250, 'b': 'c'}
lst = list(iterate_values(S))