如何并行查找嵌套列表中的元素
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'}]
我有一个元素列表 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'}]