如果内部列表中有任何元素匹配,如何从列表列表中获取列表

时间:2019-02-13 19:28:49

标签: python list dictionary

'list1'的第二个列元素与'list2循环中的元素匹配时,我想从'list1'中获取内部列表'

我有一个这样的列表:

list1=
    [
        [1546,'token1',12,442],
        [23,'token2',4,542],
        [6,'token3',34,462],
        [336,'token4',45,642],
        [146,'token5',43,62],
    ]

和另一个列表:

list2=['token1','token2','token3','token4','token5']



 for element in list2:

如果要 element == list1第二个column元素(即'token1'== list1的第二个colomn元素'token1')在这里,我想要
然后我得到清单          list1 中的 [ID,element,value1,value2] (即 [1546,'token1',12,442] )。

4 个答案:

答案 0 :(得分:1)

您可以尝试:

dict_from_list_1 = {e[1]: e for e in list1}
for element in list2:
    if element in dict_from_list_1:
        print(dict_from_list_1[element])

答案 1 :(得分:0)

列表理解是一种非常简单而强大的方法:

lista = [[i for i in list1 if token in i] for token in list2]

print([each[0] for each in lista if len(each)])

输出:

[[1546, 'token1', 12, 442], [23, 'token2', 4, 542], [6, 'token3', 34,462], [336, 'token4', 45, 642], [146, 'token5', 43, 62]]

答案 2 :(得分:0)

您可以使用dictcomp创建字典来进行查找,并使用listcomp将数据提取到列表中:

d = {i[1]: i for i in list1}
l = [d[i] for i in list2]

答案 3 :(得分:0)

这是完成所需结果的两种方法。让我展示很长的路要走:

for i in list1:
    if i[1] in list2:
        print (i)

然后在这里,我们可以使用Generator一行实现上述目标。

[element for element in list1 if element[1] in list2]

希望这会有所帮助。