gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:55 26 4
gpt4 key购买 nike

我想要获得 2 个嵌套列表的并集以及公共(public)值的索引。

我有两个列表,例如 A = [[1,2,3],[4,5,6],[7,8,9]]B = [[ 1,2,3,4],[3,3,5,7]] 但每个列表的长度约为 100 000。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])

但这需要很长时间,或者永远不会完成

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

有人有想法吗?

最佳答案

创建一个辅助字典(工作时间为O(len(A)) - 假设 A 中子列表的前三项唯一地标识它(否则您需要一个列表字典):

aud = dict((tuple(a[:3]), i) for i, a in enumerate(A))

使用所述字典在 B 上循环一次(工作时间为 O(len(B)))以获得 B 子列表和 A 索引:

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

关于python 2个带索引的嵌套列表的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com