检查列表中的列表元素是否在Python的列表中的另一个列表中

时间:2015-02-26 16:54:06

标签: python list

根据下面的数据,我如何打印列表中列表中不同列表中另一个列表中的元素?

实施例

a = [['P101','John','Jones','100'], ['P102','Steve','Woodhouse','500'], ['P103','Ben','Jacobs','60']]
b = [['P101','John','Jones','250'], ['P102','Steve','Woodhouse','500']

我想打印'John Jones'& 'Steve Woodhouse'即使'John Jones'的列表略有不同(他的ID 'P101'仍会出现在两个列表中)。我还要打印'Steve Woodhouse'但不打印'Ben Jacobs',因为他不在两个列表中。

2 个答案:

答案 0 :(得分:1)

其中一种方法可以。这将检查两个列表中是否存在相同的ID。 (不是一个有效的)

>>> for i in a:
...     if i[0] in (j[0] for j in b):
...         print("{} {}".format(i[1],i[2]))
... 
John Jones
Steve Woodhouse

答案 1 :(得分:1)

您可以改为创建词典,然后使用viewkeys函数交叉键,如下所示:

a = [['P101','John','Jones','100'], ['P102','Steve','Woodhouse','500'], ['P103','Ben','Jacobs','60']]
b = [['P101','John','Jones','250'], ['P102','Steve','Woodhouse','500']]

ad = { p[0]: "{} {}".format(p[1],p[2]) for p in a}
bd = { p[0]: "{} {}".format(p[1],p[2]) for p in b}
common_id = ad.viewkeys() & bd.viewkeys()

for id in common_id:
    print ad[id]

Live example