我正在寻找一种从列表和字典中生成2元组的Pythonic方法。
目前我有一个列表和一本字典。
生成列表:
a_ids = ['A_%' % i for i in range(1,4)]
['A_1',
'A_2',
'A_3']
和字典:
a_dict = [{'A': i} for i in range(1,4)]
[{'A': 1},
{'A': 2},
{'A': 3}]
我想要的是回归的方式:
[('A_1', {'A': 1}),
('A_2', {'A': 2}),
('A_3', {'A': 3})]
我试过了:
import itertools
list(itertools.product( (a_ids), (a_dict) ))
它很接近,但错了:) 我理解为什么,在概念上,但我不确定如何纠正它。
[('A_1', {'A': 1}),
('A_1', {'A': 2}),
('A_1', {'A': 3}),
('A_2', {'A': 1}),
('A_2', {'A': 2}),
('A_2', {'A': 3}),
('A_3', {'A': 1}),
('A_3', {'A': 2}),
('A_3', {'A': 3})]
答案 0 :(得分:3)
您需要zip
,而不是itertools.product
:
both = zip(a_ids, a_dict)
答案 1 :(得分:0)
在一行中:
twople = [('A_%d' % i, {'A': i}) for i in range(1,4)]
您可以使用单个for
,但请在两个位置使用索引值。
输出:
[('A_1', {'A': 1}),
('A_2', {'A': 2}),
('A_3', {'A': 3})]
答案 2 :(得分:0)
这个怎么样:[['A_%d'%i, {'A': i}] for i in range(1,4)]