如何在列表列表(python)中查找项的索引?

2024-03-29 09:27:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个清单:

list1 = [a, b, c, d, e, f, g]

我还有另一个列表,列表1中的项目:

list2 = [[a, c], [d,e,f], [g]]

我想知道列表1中的索引,顺序和列表2中的相同:

indexes = [[0, 2], [3, 4, 5], [6]]

谢谢!你知道吗


Tags: 项目列表顺序list2indexeslist1
3条回答

一种有效的方法是使用dict理解来创建一个映射,该映射将项映射到具有enumerate的索引,然后使用列表理解来根据映射dict将子列表中的项映射到索引:

d = {k: i for i, k in enumerate(list1)}
[list(map(d.get, l)) for l in list2]

这将返回:

[[0, 2], [3, 4, 5], [6]]

您可以使用以下列表理解,其中值匹配的索引可以通过在list1上迭代时使用enumerate获得:

[[ix for j in i for ix,k in enumerate(list1) if k==j] for i in list2]
# [[0, 2], [3, 4, 5], [6]]

你可能会发现一些有用的读物:

试试这个:

indexes = [[list1.index(k) for k in i] for i in list2]

输出

[[0, 2], [3, 4, 5], [6]]

相关问题 更多 >