-5

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

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

1 回答 1

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)

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

于 2013-05-09T04:10:28.847 回答