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

时间:2019-03-26 13:34:13

标签: python

我有这个列表:

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

我还有另一个列表列表以及list1中的项目:

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

我想以与列表2相同的顺序了解list1中的索引:

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

谢谢!

3 个答案:

答案 0 :(得分:5)

尝试一下:

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

输出

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

答案 1 :(得分:4)

您可以使用以下列表推导,其中在enumerate上进行迭代时,可以使用list1获得与值匹配的索引:

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

一些读物可能对您有用:

答案 2 :(得分:1)

一种有效的方法是使用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]]