Python:比较两个列表并创建一个字典

时间:2017-03-22 00:30:11

标签: python list dictionary

在Python中,我有一个对列表( A )和一个整数列表( B )。 A和B始终具有相同的长度。我想知道一个快速方法找到对应于B中相同值的A的所有元素(对)(通过比较A和B的索引)然后存储字典中的值 C )(字典的键对应于B的元素)。例如,如果

A = [(0, 0), (0, 1), (0, 3), (0, 6), (0, 7), (1, 3), (1, 7)]
B = [  2,      5,      5,       1,      5,     4,       1  ]

然后

C = {1: [(0,6),(1,7)], 2: [(0,0)],  4: [(1,3)], 5[(0,1), (0,3), (0,7)]}

目前,我正在尝试这种方法:

C = {}
for a, b in zip(A, B):
    C.setdefault(b, [])
    C[b].append(a)

虽然这种方法给了我想要的结果,但我想要一些更快的方法(因为我需要使用大数据集)。如果有人能建议快速方式来实现这一点,我将感激不尽(一旦知道列表A和B就找到字典C)。

2 个答案:

答案 0 :(得分:1)

我会建议

for i in range (0,len(B)):
    C2.setdefault(B[i], [])
    C2[B[i]].append(A[i])

它会保存zip(A,B)进程

答案 1 :(得分:1)

import collections
C = collections.defaultdict(list)
for ind, key in enumerate(B):
    C[key].append(A[ind])