我有三个列表,第一个是名单列表,第二个是字典列表,第三个是数据列表。列表中的每个位置对应于其他列表中的相同位置。 List_1 [0]在List_2 [0]和List_3 [0]等中有相应的数据。我想将这三个列表转换为字典中的字典,List_1中的值是主键。如何在保持一切正常的同时做到这一点?
答案 0 :(得分:13)
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> dict(zip(a, zip(b, c)))
{1: (4, 7), 2: (5, 8), 3: (6, 9)}
有关zip
的详细信息,请参阅documentation。
正如Lionbest在下面指出的那样,如果您的输入数据很大,您可能需要查看itertools.izip()
。 izip
与zip
的作用基本相同,但它会创建迭代器而不是列表。这样,您就不会在创建字典之前创建大型临时列表。
答案 1 :(得分:1)
Python 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
Python 2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
答案 2 :(得分:0)
如果这些事情的顺序很重要,你不应该使用字典。根据定义,它们是无序的。你可以使用其中一个many ordered_dictionary implementations浮动,或者等待python 2.7或3.1,它将在collections模块中包含一个有序的字典实现。