我有三个列表,第一个是名称列表,第二个是字典列表,第三个是数据列表。列表中的每个位置对应于其他列表中的相同位置。List_1[0]在List_2[0]和List_3[0]等中有对应的数据。我想把这三个列表变成字典里面的字典,List_1中的值是主键。如何在保持一切井井有条的同时做到这一点?
问问题
1394 次
3 回答
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
。
正如下面 lionbest 指出的那样,您可能想查看itertools.izip()
输入数据是否很大。izip
本质上与 做相同的事情zip
,但它创建迭代器而不是列表。这样,您就不会在创建字典之前创建大型临时列表。
于 2009-08-05T12:27:35.123 回答
1
蟒蛇 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
蟒蛇2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
于 2009-08-05T12:28:07.727 回答
0
如果这些事情的顺序很重要,你不应该使用字典。根据定义,它们是无序的。您可以使用浮动的许多 ordered_dictionary 实现之一,或者等待 python 2.7 或 3.1,它将在 collections 模块中包含一个有序字典实现。
于 2009-08-05T16:33:25.113 回答