If 语句未按预期运行

时间:2021-01-20 12:53:30

标签: python list if-statement comparison

我正在尝试在两个列表之间进行比较,如果用户在源数据库和目标数据库中都存在,我不希望打印该用户。我尝试使用 if 语句,但由于某种原因我不明白,即使目标数据库中存在用户“Will”,他仍然被打印。你能帮我解决这个问题吗?谢谢

source_database = [("John","Smith","1985"),("Will","Tomson","1958")]
destination_database = [("John","Smith","1985"),("Will","Tomson","1956")]

users_to_add = [user for user in source_database if user not in destination_database]
for users in users_to_add:
    if users not in  destination_database:
        print(users)

else:
    continue

输出:

('Will', 'Tomson', '1958')

1 个答案:

答案 0 :(得分:1)

in 语句检查其比较的元组的内容。因此,由于一个元组中包含“1958”,而一个元组中包含“1956”,因此元组没有等效的内容。

编辑:

一种解决方案是从源数据库创建一个名称列表,然后检查用户名是否在其中。

source_users = [x[0] for x in source_database]

users_to_add = [user for user in source_database if user not in destination_database]

for users in users_to_add:

    if users[0] not in source_users:

        print(users)