如何并行查找嵌套列表中的元素

how to look for an element in nested list in parallel

我有一个元素列表 A = ['a', 'b', 'c', 'd'] 和一个嵌套列表 B = [{'55','a'}, {'4','t'}, {'x','y','zx'}, {'b','d'}, {'66','c'}]
另外,每个元素只能出现在B.

的一个子列表中

我想为 A 中的每个元素找到包含它的 B 中的子列表的索引 ([0, 3, 4, 3])。假设 A 中的所有元素都出现在 B.

中的某处

使用嵌套循环不适合我的数据大小。

首先为每个项目构建 B 中位置的字典,然后在 A 上使用列表理解:

d = {k:i for i,s in enumerate(B) for k in s}
# {'55': 0, 'a': 0, 't': 1, '4': 1,
#  'zx': 2, 'y': 2, 'x': 2, 'd': 3,
#  'b': 3, 'c': 4, '66': 4}

out = [d[x] for x in A]

或者,如果您不确定 A 的所有元素都在 B 中:

out = [d.get(x, -1) for x in A]

输出:

[0, 3, 4, 3]

使用的输入:

A = ['a', 'b', 'c', 'd']
B = [{'55','a'}, {'4','t'}, {'x','y','zx'}, {'b','d'}, {'66','c'}]