从列表和字典生成2元组

时间:2018-03-27 20:36:12

标签: python dictionary tuples list-comprehension

我正在寻找一种从列表和字典中生成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})]

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