Skip to main content
 首页 » 编程设计

python之列出循环 : print second tuple element if condition 中的比较

2025年05月04日14freeliver54

我有以下列表和嵌套列表:

first_var = ["id1","id2","id3"] 
second_var = [("id1","name1"),("id2","name2"),("id3","name3"),("id4","name4"),] 

我想检查“second_var”中不存在于“first_var”中的每个第一个元素,并打印“second_var”中的第二个元素。

我的代码是:

for x in [x[0] for x in second_var]: 
    if x not in first_var: 
        print(...) 

现在,如果我执行 print(x),它会打印:

id4

但我需要它来打印 name4

我怎样才能做到这一点?

请您参考如下方法:

您的代码的问题是您没有迭代原始列表。您只是迭代列表中每个元组的第一个条目。

这是调整代码的方式:

first_var = ["id1","id2","id3"] 
second_var = [("id1","name1"),("id2","name2"),("id3","name3"),("id4","name4"),] 
 
for x in second_var: 
    if x[0] not in first_var: 
        print(x[1]) 

Pythonic 解决方案是将其转换为列表理解:

values = set(first_var) 
res = [x[1] for x in second_var if x[0] not in values] 
 
for item in res: 
    print(item) 

或者功能版;不推荐,但另一种看待逻辑的方式:

from operator import itemgetter 
 
values = set(first_var) 
res = map(itemgetter(1), filter(lambda x: x[0] not in values, second_var))