我有一些代码可以为列表字典生成所有的组合。
它的结果是:
现在我希望它能够处理嵌套的字典列表,例如:
应该会产生类似这样的结果:
import itertools
import collections
def gen_combinations(d):
keys, values = d.keys(), d.values()
combinations = itertools.product(*values)
for c in combinations:
yield dict(zip(keys, c))
假设我有一个字典A
,如下所示:
A = {'a': [0, 1],
'b': [2, 3, 4]}
它的结果是:
{'a': 0, 'b': 2}
{'a': 0, 'b': 3}
{'a': 0, 'b': 4}
{'a': 1, 'b': 2}
{'a': 1, 'b': 3}
{'a': 1, 'b': 4}
现在我希望它能够处理嵌套的字典列表,例如:
B = {'s1': {'a': [0, 1],
'b': [0, 1, 2] },
's2': {'c': [0, 1],
'd': [0, 1] }}
应该会产生类似这样的结果:
{'s1': {'a': 0, 'b': 0},
's2': {'c': 0, 'd': 0}}
{'s1': {'a': 0, 'b': 0},
's2': {'c': 0, 'd': 1}}
{'s1': {'a': 0, 'b': 0},
's2': {'c': 1, 'd': 0}}
{'s1': {'a': 0, 'b': 0},
's2': {'c': 1, 'd': 1}}
对于所有组合,都是如此......我正在寻找一种优雅的方法来实现这一点。没有特定的性能限制,它们是小字典。