在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)。
答案 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])