gpt4 book ai didi

python - 根据其他两个列表中的值创建列表

转载 作者:行者123 更新时间:2023-11-30 22:06:04 25 4
gpt4 key购买 nike

假设我有两个如下所示的列表:

A = [(1,4), (5,2), (10, 8), (11, 3), (59, 14)]
B = [4, 2, 3, 4, 8, 14, 4, 2]

我想基于列表 A 和列表 B 创建一个名为 C 的新列表,以便 C看起来像这样:

C = [(1,4), (5,2), (11,3), (1,4), (10,8), (59,14), (1,4), (5,2)]

也就是说,我想根据元组中的第二个值将 B 中的每个值与 A 中相应元组中的第一个值链接起来。

我想我可以用 for 循环来做到这一点,如下所示:

C  = []
for tuple in A:
for number in B:
if number == tuple[1]:
C.append(tuple)

但我认为这对于大型列表来说不是非常有效。

问题:是否有更有效的方法来创建列表C

谢谢!

最佳答案

您可以执行以下操作:

A = [(1,4), (5,2), (10, 8), (11, 3), (59, 14)]
B = [4, 2, 3, 4, 8, 14, 4, 2]

a = {t[1]: t for t in reversed(A)} # reverse to guarantee first tuple for each key
# {14: (59, 14), 3: (11, 3), 8: (10, 8), 2: (5, 2), 4: (1, 4)}

C = [a[x] for x in B]
#[(1, 4), (5, 2), (11, 3), (1, 4), (10, 8), (59, 14), (1, 4), (5, 2)]

您在 A 中构建从第二个值到第一个元组的映射,并在推导式中使用它。这可确保您仅迭代 AB 一次。

关于python - 根据其他两个列表中的值创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835068/

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