2个带索引的嵌套列表的python并集

2个带索引的嵌套列表的python并集,python,dataset,list,nested,union,Python,Dataset,List,Nested,Union,我想得到两个嵌套列表的并集,再加上公共值的索引 我有两个列表,像A=[[1,2,3],[4,5,6],[7,8,9]和B=[[1,2,3,4],[3,3,5,7],但每个列表的长度约为100000。属于A的索引向量具有len(A):I=[2,3,4] 我想要的是找到B中的所有子列表,其中前3个元素等于a中的子列表。在本例中,我想要返回B[0]([1,2,3,4]),因为它的前三个元素等于a[0]。此外,在本例中,我还希望索引为A[0],即I[0] 我尝试了不同的方法,但到目前为止没有任何效果:(

我想得到两个嵌套列表的并集,再加上公共值的索引

我有两个列表,像
A=[[1,2,3],[4,5,6],[7,8,9]
B=[[1,2,3,4],[3,3,5,7]
,但每个列表的长度约为100000。属于A的索引向量具有
len(A)
I=[2,3,4]

我想要的是找到B中的所有子列表,其中前3个元素等于a中的子列表。在本例中,我想要返回
B[0]
[1,2,3,4]
),因为它的前三个元素等于
a[0]
。此外,在本例中,我还希望索引为
A[0]
,即
I[0]

我尝试了不同的方法,但到目前为止没有任何效果:(

首先,我尝试了这个:

Common = []

for i in range(len(B)):

   if B[i][:3] in A:

      id = [I[x] for x,y in enumerate(A) if y == B[i][:3]][0]
         ctdCommon.append([int(id)] + B[i])   
但这需要很长时间,或者永远不会结束

然后我将
A
B
转换为集合,并从两者中取并集,这非常快,但我不知道如何获得相应的索引

有人有想法吗?

创建一个辅助目录(工作是
O(len(A)
)——假设子列表中的前三项唯一地标识它(否则您需要一个列表目录):

使用所述dict在B上循环一次(工作是
O(len(B))
),以获得B个子列表和A索引:

result = [(b, aud[tuple(b[:3])]) for b in B if tuple(b[:3]) in aud]
创建一个辅助目录(工作是
O(len(A)
)——假设子列表中的前三项唯一地标识它(否则您需要一个列表目录):

使用所述dict在B上循环一次(工作是
O(len(B))
),以获得B个子列表和A索引:

result = [(b, aud[tuple(b[:3])]) for b in B if tuple(b[:3]) in aud]

做得好,了解了足够多的被要求给出答案。我的大脑在试图理解他想要什么时感到疼痛。做得好,了解了足够多的被要求给出答案。我的大脑在试图理解他想要什么时感到疼痛。