使用相同字符串的列表索引列表列表

Indexing a list of lists using a list of the same strings

我正在尝试创建一个列表列表,用另一个列表中的字符串索引替换给定字符串。

我已经尝试了一些 for 循环,如下所示

l = ['FooA','FooB','FooC','FooD']
data = [['FooB','FooD'],['FooD','FooC']]
indices = []
for sublist in data:
    for x in sublist:
        indecies.append(l[list.index(x)])

我希望得到: indices = [[1,3],[3,2]] 尽管元素的数据类型可以是 str 如果需要

我最接近得到这样的东西的是一个 2x2 的列表列表,其中包含 2 个

我这样做的方法是首先创建一个字典将字符串映射到它们各自的索引,然后使用嵌套列表理解从嵌套列表中查找值:

from itertools import chain

d = {j:i for i,j in enumerate(chain.from_iterable(l))}
# {'FooA': 0, 'FooB': 1, 'FooC': 2, 'FooD': 3}
[[d[j] for j in i] for i in data]
# [[1, 3], [3, 2]]

为了与您的代码保持一致,我将其更改为:

l = ['FooA','FooB','FooC','FooD']
data = [['FooB','FooD'],['FooD','FooC']]
indices = []

for sublist in data:
    temp = []
    for x in sublist:
        temp.append(l.index(x))
    indices.append(temp)

print(indices)
# [[1, 3], [3, 2]]