如何比较不同对象的两个列表并返回匹配?

2024-09-25 14:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想拿这两张单子比较一下

list1 = [(Joe Black, married, happy),(Mili Cis, unmarried , happy),(Gary Oldman, married, unhappy)]
list2 = [Joe Black,Gary Oldman]

我想要新的清单:

list3 = [(Joe Black, married, happy),(Gary Oldman, married, unhappy)]

其中对对象的引用来自list1。你知道吗


Tags: 对象单子blackhappyjoecisgarylist2
3条回答

试试这个:list3 = [x for x in list1 if x[0] in list2]

如果您想发布此代码:

list1 = [('Joe Black', 'married', 'happy'), ('Mili Cis', 'unmarried', 'happy'), ('Gary Oldman', 'married', 'unhappy')]
list2 = ['Joe Black', 'Gary Oldman']

那么这个列表就是你想要的:

list3 = [(name,status,desc) for (name,status,desc) in list1 if name in list2]

print(list3)

输出:

[('Joe Black', 'married', 'happy'), ('Gary Oldman', 'married', 'unhappy')]

常规方法:

list1 = [("Joe Black", "married", "happy"),("Mili Cis", "unmarried" , "happy"),("Gary Oldman", "married", "unhappy")]
list2 = ["Joe Black","Gary Oldman"]
a = []
for i in list1:
    if i[0] in list2:
        a.append(i)
print(a)

输出:

[('Joe Black', 'married', 'happy'), ('Gary Oldman', 'married', 'unhappy')]

使用列表理解:

list1 = [("Joe Black", "married", "happy"),("Mili Cis", "unmarried" , "happy"),("Gary Oldman", "married", "unhappy")]
list2 = ["Joe Black","Gary Oldman"]
a = [i for i in list1 if i[0] in list2]
print(a)

输出:

[('Joe Black', 'married', 'happy'), ('Gary Oldman', 'married', 'unhappy')]

相关问题 更多 >