我的数据是一个大的(链接的(列表,它由较小的列表(7500+(组成。在这些较小的列表中存在另一个以字符串为值的列表。列表A<--列出B的<--列出C(姓名(。
List_A = [['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['124', 'Hello Universe', '2021', ['harold', 'jessica', 'ashley'], 'Y'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]
List_A.nodeat(0).value[3]
>>>> ['john', 'mike', 'edgar']
Outside this large list, I've created a string split list of names:
List_Outside = ['mike', 'maria'].
我想创建一个新的列表(list_a_2(,其中只有列表B在列表C中的list_Outside中至少有一个匹配的名称。
所以List_A_2看起来像:
List_A_2 = [['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]
当然,我希望这适用于7500+个列表,所以我需要在for循环中使用索引。提前谢谢。
您可以使用any()
来过滤列表:
List_A_2 = [l for l in List_A if any(w in List_Outside for w in l[3])]
print(List_A_2)
打印:
[['123', 'Hello World', '2020', ['john', 'mike', 'edgar'], 'N'],
['125', 'Hello Milkyway', '2020', ['maria', 'tessa', 'rodrigo'], 'N']]