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

如何在列表列表(python)中查找项的索引?,python,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]] 谢谢 您可以使用以下列表理解,其中值匹配的索引可以通过在list1上迭代时使用enumerate获得: [[ix for j in i for ix,k in enumerate(list1)

我有以下清单:

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]]

谢谢

您可以使用以下列表理解,其中值匹配的索引可以通过在
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]]

一种有效的方法是使用dict理解创建映射,将项目映射到带有
枚举的索引,然后使用列表理解根据映射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]]

你自己试过什么吗?如果是,请在此处提供您的尝试。如果没有,那就继续努力吧。如果您有具体的实现问题,我们可以提供帮助,但我们不会为您编写代码!你好关于堆栈溢出,我们希望您向我们展示您以前尝试过的内容。我们来这里不是为了从头开始做所有的工作。理想情况下,我们会查看您已经尝试过的代码,然后指出问题所在。这对我们来说更容易,而且它将帮助您了解遇到的问题,而不是使用其他人的代码,从而成为一名更好的程序员。