将两个列表的所有组合组合成特殊形式的字典

时间:2013-08-28 20:30:05

标签: python list dictionary combinations

我有两个清单:

var_a = [1,2,3,4]

var_b = [6,7]

我希望有一个dicts列表如下:

result = [{'a':1,'b':6},{'a':1,'b':7},{'a':2,'b':6},{'a':2,'b':7},....]

我认为结果应该清楚。

3 个答案:

答案 0 :(得分:5)

[{k:v for k,v in itertools.izip('ab', comb)} for comb in itertools.product([1,2,3,4], [6,7])]

>>> import itertools
>>> [{k:v for k,v in itertools.izip('ab', comb)} for comb in itertools.product([
1,2,3,4], [6,7])]
[{'a': 1, 'b': 6}, {'a': 1, 'b': 7}, {'a': 2, 'b': 6}, {'a': 2, 'b': 7}, {'a': 3
, 'b': 6}, {'a': 3, 'b': 7}, {'a': 4, 'b': 6}, {'a': 4, 'b': 7}]

答案 1 :(得分:3)

from itertools import product

a = [1,2,3,4]
b = [6,7]
[dict(zip(('a','b'), (i,j))) for i,j in product(a,b)]

产量

[{'a': 1, 'b': 6},
 {'a': 1, 'b': 7},
 {'a': 2, 'b': 6},
 {'a': 2, 'b': 7},
 {'a': 3, 'b': 6},
 {'a': 3, 'b': 7},
 {'a': 4, 'b': 6},
 {'a': 4, 'b': 7}]

答案 2 :(得分:1)

如果给你变量的名称,你可以使用。

>>> a = [1,2,3,4]
>>> b = [6,7]
>>> from itertools import product
>>> nameTup = ('a', 'b')
>>> [dict(zip(nameTup, elem)) for elem in product(a, b)]
[{'a': 1, 'b': 6}, {'a': 1, 'b': 7}, {'a': 2, 'b': 6}, {'a': 2, 'b': 7}, {'a': 3, 'b': 6}, {'a': 3, 'b': 7}, {'a': 4, 'b': 6}, {'a': 4, 'b': 7}]
相关问题