if -语句没有按照预期运行



我试图做两个列表之间的比较,我不希望一个用户被打印,如果他存在于源和目标数据库。我试着使用if语句,但由于某些原因我不明白,即使用户"将";存在于目的地数据库中,他还在打印中。你能帮我弄明白吗?谢谢你

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')

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)

相关内容

  • 没有找到相关文章

最新更新