我想根据其中的值生成使用字典的所有可能方式。为了用代码解释,我有:
a = {'name' : 'a', 'items': 3}
b = {'name' : 'b', 'items': 4}
c = {'name' : 'c', 'items': 5}
我希望能够从这些字典中准确地挑选(比如说)7 个项目,以及我能做到的所有可能的方式。
所以:
x = itertools.product(range(a['items']), range(b['items']), range(c['items']))
y = itertools.ifilter(lambda i: sum(i)==7, x)
会给我:
(0, 3, 4)
(1, 2, 4)
(1, 3, 3)
...
我真正想要的是:
({'name' : 'a', 'picked': 0}, {'name': 'b', 'picked': 3}, {'name': 'c', 'picked': 4})
({'name' : 'a', 'picked': 1}, {'name': 'b', 'picked': 2}, {'name': 'c', 'picked': 4})
({'name' : 'a', 'picked': 1}, {'name': 'b', 'picked': 3}, {'name': 'c', 'picked': 3})
....
关于如何干净地做到这一点的任何想法?