我正在尝试在两个列表之间进行比较,如果用户在源数据库和目标数据库中都存在,我不希望打印该用户。我尝试使用 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')
答案 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)