Python 连接字典
我有三个列表,第一个是名字列表,第二个是字典列表,第三个是数据列表。列表中的每个位置与其他列表中的相同位置相对应。列表_1[0]在列表_2[0]和列表_3[0]中有相应的数据。我想将这三个列表转换为字典中的一个字典,列表_1中的值是主键。我如何做到这一点,同时保持一切井然有序Python 连接字典,python,dictionary,merge,key,Python,Dictionary,Merge,Key,我有三个列表,第一个是名字列表,第二个是字典列表,第三个是数据列表。列表中的每个位置与其他列表中的相同位置相对应。列表_1[0]在列表_2[0]和列表_3[0]中有相应的数据。我想将这三个列表转换为字典中的一个字典,列表_1中的值是主键。我如何做到这一点,同时保持一切井然有序 >>> a = [1,2,3] >>> b = [4,5,6] >>> c = [7,8,9] >>> dict(zip(a, zip(b, c)))
>>> 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在下面指出的,您可能想看看您的输入数据是否很大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])
如果这些事情的顺序很重要,你就不应该使用字典。根据定义,它们是无序的。您可以使用其中一种浮动,或者等待python 2.7或3.1,它将在collections模块中包含一个有序字典实现。如果a、b、c将非常庞大,我建议使用itertools模块中的izip。