Skip to main content
 首页 » 编程设计

python之在 python 中搜索嵌套列表

2025年05月04日13daizhj

我有一个包含 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