使用相同字符串列表为列表列表建立索引

时间:2019-07-02 20:22:12

标签: python list indexing sublist

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

我尝试了一些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

与之类似,我能得到的最接近的数字是2填充的列表的2x2列表

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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