【发布时间】:2023-04-10 09:47:01
【问题描述】:
我有三个列表,第一个是名称列表,第二个是字典列表,第三个是数据列表。列表中的每个位置对应于其他列表中的相同位置。 List_1[0]在List_2[0]和List_3[0]等中有对应的数据。我想把这三个列表变成字典里面的字典,List_1中的值是主键。如何在保持一切井井有条的同时做到这一点?
【问题讨论】:
标签: python dictionary merge key
我有三个列表,第一个是名称列表,第二个是字典列表,第三个是数据列表。列表中的每个位置对应于其他列表中的相同位置。 List_1[0]在List_2[0]和List_3[0]等中有对应的数据。我想把这三个列表变成字典里面的字典,List_1中的值是主键。如何在保持一切井井有条的同时做到这一点?
【问题讨论】:
标签: python dictionary merge key
>>> 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 的作用基本相同,但它创建的是迭代器而不是列表。这样,您就不会在创建字典之前创建大型临时列表。
【讨论】:
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])
【讨论】:
如果这些事情的顺序很重要,你不应该使用字典。根据定义,它们是无序的。您可以使用浮动的many ordered_dictionary implementations 之一,或者等待python 2.7 或3.1,它将在集合模块中包含一个有序的字典实现。
【讨论】: