I have a list of email subjects which were sent today (I connect to my IMAP server, and fetch all emails): sent_subjects = [ 'subject1 backup up completed', 'subject2-2 backup failed', 'subject4 backup partial complete', 'email3 done', 'ak47 failed', 'mp5 is good', 'm4 is good' ] I have a json file and almost all scripts I have and send email, they have entry there: emails = [ {'subject': 'mp3 is good', 'date': '2020-02-02'}, {'subject': 'mp5 is good', 'date': '2020-02-02'}, {'subject': 'm4 is good', 'date': '2020-02-02'} ] And I create subjects like this: subjects = [x['subject'] for x in emails] These are all the subjects that should be sent (some of them were not sent): static_subjects = [ 'subject1', 'subject2-2', 'subject4', 'email3', 'ak47', 'subject10', 'email11', 'final destination' ] subjects += static_subjects subjects.sort() I know I can do this, but this does not return the expected output: final = list(set(subjects) - set(sent_subjects)) Because some subjects like subject1 and subject4 do not have static subject and they may change based on some conditions (these subjects are not mine, and I do not send email with these subjects. I just receive them). So, I need to check if any subjects of subjects are not in sent_subjects, so I can trace which emails I did not receive, to see if there any issues. In this case, I did not receive these subjects and the output should have them: mp3 is good subject10 email11 final destination The other thing I know is using if == does not work, because email11 for example is like subject1 and subject2-2 that has two or more subjects (if fails or success). Would you please help me regarding this? Continue reading...