根据下面的数据,我如何打印列表中列表中不同列表中另一个列表中的元素?
实施例
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'
,因为他不在两个列表中。
答案 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]