Как провести перекрестную проверку между несколькими списками python, чтобы найти повторяющиеся идентификаторы - PullRequest
0 голосов
/ 01 мая 2020

У меня есть три списка, в которых есть идентификаторы запросов для писем, заголовков и текста в этих письмах. Я пытаюсь сравнить заголовок электронной почты и текст, и если они дублируются, получить идентификаторы для них. Списки упорядочены таким образом, что id1 имеет 'title1' и 'sampleText1', id3 имеет 'title2' и 'sampleText2' et c:

id = [1, 2, 3, 4, 5, 6]
title = ['title1', 'title1', 'title2' 'title3', 'title3', 'title4']
text = ['sampleText1', 'sampleText1' 'sampleText2', 'sampleText3', 'sampleText3', 'sampleText4]

из приведенных выше списков, которые у меня есть чтобы установить sh, какие из них являются дубликатами, и мой желаемый вывод для вышеупомянутого будет:

 id = [2, 5]

Может ли кто-нибудь помочь с этим? Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 01 мая 2020

Предполагается, что размеры списка одинаковы. Все, что вам нужно сделать, это перебрать элементы title и сравнить элементы (вложенные циклы) в каждом индексе. Код ниже

id = [1, 2, 3, 4, 5, 6]
title = ['title1', 'title1', 'title2', 'title3', 'title3', 'title4']
text = ['sampleText1', 'sampleText1', 'sampleText2', 'sampleText3', 'sampleText3', 'sampleText4']
res = []
for i in range(len(id)):
    for j in range(i+1,len(id)): #i+1 'cause we need to start comparing from the next index
        if title[i] == title[j]:
            res.append(id[j])
            break

print(res)
0 голосов
/ 01 мая 2020

Другое решение, которое будет ниже, в котором порядок title и text не имеет значения:

id = [1, 2, 3, 4, 5, 6]
title = ['title1', 'title1', 'title2', 'title3', 'title3', 'title4']
text = ['sampleText1', 'sampleText1', 'sampleText2', 'sampleText3', 'sampleText3', 'sampleText4']


dupTitles = [] # Titles that are already checked.
dupTexts = [] # Texts that are already checked.
result = [] # Final list of IDs.

for elemId, elemTitle, elemText in zip(id,title,text):
    if elemTitle in dupTitles and elemText in dupTexts:
        result.append(elemId)
    else:
        dupTitles.append(elemTitle)
        dupTexts.append(elemText)

print(result)

Результат будет:

[2, 5]
0 голосов
/ 01 мая 2020

Вы можете сделать для l oop вот так:

id = [1, 2, 3, 4, 5, 6]
title = ['title1', 'title1', 'title2', 'title3', 'title3', 'title4']
text = ['sampleText1', 'sampleText1', 'sampleText2', 'sampleText3', 'sampleText3', 'sampleText4']

result = []

for x in id:
    tmptitle = title[x-1]
    tmptext = text[x-1]
    if x > 0:
        if tmptitle == title[x-2] and tmptext == text[x-2]:
            result.append(x)

print(result)

для другого вопроса, пожалуйста, укажите код, который вы написали, чтобы решить свой вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...