如何从列表中的第n个元组索引制作一个dict

时间:2013-05-09 04:06:25

标签: python list dictionary

我正在寻找字典理解来执行以下操作:

>>> my_list = [(1,2,3,4),(5,6,7,8)]
>>> new_dict = dict( *python voodoo* )
>>> print new_dict
{(1,2):'item1',(5,6):'item2'}

1 个答案:

答案 0 :(得分:1)

您需要以下内容:

d = {x[:2]:'item'+str(i+1) for i, x in enumerate(my_list)}

我将打破这种方式如何运作,以便将来减少“python voodoo”:

首先,我们想要列表中每个元组的前两个值。这是通过列表切片x[:2]完成的。这说“给我x”的前两个值。

其次,利用enumerate,它可以使用基于0的索引有效地压缩返回值。例如,如果我们在原始列表中调用enumerate

>>> for enum in enumerate(my_list): 
        print(enum)

(0, (1, 2, 3, 4))
(1, (5, 6, 7, 8))

这给了我们一个tuple,其中索引作为第一个元素,第二个元素列表中的内容。

我们可以通过将两个元素分配给两个值来解包它:

>>> for i, x in enumerate(my_list):
        print(str(i) + " : " + str(x))

0 : (1, 2, 3, 4)
1 : (5, 6, 7, 8)

最后,我们需要做的就是将这一切都放入字典理解(这与列表理解非常相似),然后进行一些字符串转换。