gpt4 book ai didi

python - 在 python 中搜索嵌套列表

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:58 27 4
gpt4 key购买 nike

我有一个包含 97510 个值的元组嵌套列表,如下所示:

a = [ (1,2,3), (3,4,5), (5,4,2)]

每个第一个值 (index=0) 都是唯一的,我需要找到具有相同 index=1 项的其他 index=0 项在示例中,我需要找到第二个和第三个元组,其中第二个项目“4”是常见的。

我该怎么做?

最佳答案

如果要查找所有匹配项:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for inner in a:
... d[inner[1]].append(inner)
...
>>> d
defaultdict(<type 'list'>, {2: [(1, 2, 3)], 4: [(3, 4, 5), (5, 4, 2)]})
>>> d[4]
[(3, 4, 5), (5, 4, 2)]

如果您想为特定的第二个值挑选出所有匹配项:

<罢工>

<罢工>
>>> filter(lambda inner: inner[1] == 4, a)
[(3, 4, 5), (5, 4, 2)]

<罢工>

编辑:正如评论中所指出的,列表理解是更可取的,因为它对于此类工作更有效:

>>> [inner for inner in a if inner[1] == 4]
[(3, 4, 5), (5, 4, 2)]

使用 timeit显示列表理解速度大约快 2.5 倍(无论如何在我的机器上):

>>> timeit.timeit('[inner for inner in a if inner[1] == 4]', 'a=[(1,2,3), (3,4,5), (5, 4, 2)]')
2.5041549205780029
>>> timeit.timeit('filter(lambda inner: inner[1] == 4, a)', 'a=[(1,2,3), (3,4,5), (5, 4, 2)]')
6.328679084777832

关于python - 在 python 中搜索嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410062/

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