繁体   English   中英

使用python在列表列表中查找匹配值

[英]Find matching values in a list of lists using python

我正在尝试遍历python 2.7.5中的列表列表,并返回在第二个列表中找到第一个值的列表,如下所示:

#python 2.7.5
list1 = ['aa', 'ab', 'bb', 'bc', 'cc']
list2 = [['aa', 1, 3, 7],['de', 2, 2, 1],['bc', 3, 4, 4]]

list3 = []
for x in list1:
    for y in list2:
        if x == y:
            list3.append(y)

因此,我希望list3包含[['aa',1,3,7],['bc', 3, 4, 4]] 3,4,4 [['aa',1,3,7],['bc', 3, 4, 4]]但我只是得到整个list2。

尝试更接近您想要的方法:

for e in list2:
    if e[0] in list1:
        list3.append(e)

您需要e[0]因为list2是一个列表列表。 您也可以使用filter()函数将其写在一行中:

list3 = filter(lambda e: e[0] in list1, list2)

或使用列表理解

list3 = [e for e in list2 if e[0] in list1]

您的代码中只有一个错误。 您需要x == y [0]而不是x == y。 后者正在将字符串与列表进行比较。

您还可以使用列表推导

>>> [x for x in list2 if x[0] in list1]
[['aa', 1, 3, 7],['bc', 3, 4, 4]]

看来您的问题是因为您试图将元素列表与元素列表进行比较。

如果遍历for循环,您会发现在第一次迭代中,您正在将'aa'['aa', 1, 3, 7] ,这可能不是您想要的。

如果您只是比较第一个元素,则需要将for循环更改for

for x in list1:
    for y in list2:
        if x == y[0]:
            list3.append(y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM