2013-06-04 43 views
5

我有很多的名单格式如下:创建字典从列表蟒蛇

['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''] 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''] 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''] 

我需要创建一个字典,键在列表中的第一个元素和值的完整列表。没有任何键正在重复。 这样做的最好方法是什么?

回答

5

把所有的名单在另一个列表,这样做:

my_dict = {} 
for list in lists: 
    my_dict[list[0]] = list[:] 

这基本上得到的第一个元素,并把它作为my_dict的关键,并把列表作为值。

7
>>> lists = [['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], 
['2', 'AP', '', '', '', '35.0000', '105.0000', '', ''], 
['3', 'EU', '', '', '', '47.0000', '8.0000', '', '']] 
>>> {x[0]: x for x in lists} 
{'1': ['1', 'O1', '', '', '', '0.0000', '0.0000', '', ''], '3': ['3', 'EU', '', '', '', '47.0000', '8.0000', '', ''], '2': ['2', 'AP', '', '', '', '35.0000', '105.0000', '', '']} 
+0

非常感谢:)真的帮助 –

+0

但是,如果我需要为每个列表制作单独的字典并且我不想合并列表,我该怎么办? –

+0

@wannabe_geek你必须保持你的名单莫名其妙。将它们全部放在一个列表中是最简单的方法。如果你愿意,你可以使用链表等其他东西。您的输出遵循相同的规则。你必须把它保存在某个地方。字典是最好的选择。 – AliBZ

0

如果你的索引是连续整数,你可以使用一个列表,而不是一个字典的:

lst = [None]+[x[1:] for x in sorted(lists)] 

只使用它,如果它真的适合你的问题,但。