Skip to main content
 首页 » 编程设计

python之检查列表中的字符串是否存在于另一个嵌套列表中,并返回它在嵌套列表中的索引

2025年05月04日18kevingrace

所以我有两个列表,一个普通列表和一个嵌套列表,

list1 = ['john','amal','joel','george'] 
list2 = [['john'],['jack','john','mary'],['howard','john'],['jude']] 

我想检查 list1 中的任何字符串是否存在于 list2 中,如果存在,则返回 list2 中字符串(在两个列表中)的索引。 演示所需输出的示例代码如下所示:

out = [(ind,ind2) for ind,i in enumerate(list2)  
    for ind2,y in enumerate(i) if 'john' in y] 
print out 

它返回:[(0, 0), (1, 1), (2, 1)]

上面的代码确实输出了索引,但仅限于我们手动输入的字符串。是否可以像我上面解释的那样做?任何帮助将不胜感激。(嵌套列表相当新)。 谢谢!

请您参考如下方法:

您可以简单地遍历 list1:

list1 = ['john','amal','joel','george'] 
list2 = [['john'],['jack','john','mary'],['howard','john'],['jude']] 
 
res = {} 
for w in list1: # if list1 contains duplicates use set(list1) instead 
    # create an empty list for the name of list1 and extend it by all finds or 
    # extend it by None 
    res.setdefault(w,[]).extend( [(ind,ind2) for  
              ind,i in enumerate(list2) for ind2,y in enumerate(i) if w in y] or [None] ) 
 
# print all results by name 
for k in res: 
    print k, res[k] 
 
# print all dict 
print res 

输出:

amal [None] 
joel [None] 
john [(0, 0), (1, 1), (2, 1)] 
george [None] 
 
{'amal': [None], 'joel': [None], 'john': [(0, 0), (1, 1), (2, 1)], 'george': [None]} 

我在这里使用的是字典,因此您不会忘记列表中的哪个位置。