我正在尝试创建一个列表列表,将一个给定的字符串替换为另一个列表中字符串的索引。
我尝试了一些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列表
答案 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]]