2013-08-28 37 views
0

的字典我有兩個列表:兩個列表的所有組合結合成的特殊形式

var_a = [1,2,3,4] 

var_b = [6,7] 

我想有類型的字典列表如下:

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

我想結果應該清楚。

+1

是在一個字符串提供給您的變量名稱? –

+0

是的。感謝您的詢問。 – wnstnsmth

回答

2
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}] 
+0

爲什麼元組解包並重新打包? –

+1

認爲OP對於從'產品'返回什麼是有啓發作用的。與我壓縮'('a','b')'而不是'ab''的原因是一樣的。 – wflynny

+0

這似乎比@ inspectorG4dget的回答更直觀一些(儘管由於某種原因,他得到了更多的選票)。謝謝。 – wnstnsmth

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

如果變量的名字給你,你可以使用。

>>> 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}]