У меня есть список, как показано ниже:Python: Сравните список и список кортежей
z = [('Anna Smith', 'IN1'), ('John', 'IN2'), ('Matt Andrew', 'IN3'), ('Smith', 'IN4')]
И еще один список:
c = ['Anna Smith', 'John', 'Anna', 'Smith']
Я хочу ниже вывод:
o = ['Anna Smith|IN1', 'John|IN2', 'Smith|IN4']
Я пробовал приведенный ниже код:
for s, s_inc in z:
for word in c:
if word.lower() in s.lower():
o.append("%s|%s"%(word, s_inc))
Но выше дает мне выход:
o = ['Anna Smith|IN1', 'Anna|IN1', 'Smith|IN1', 'John|IN2', 'Smith|IN4']
Как получить то, что я хочу?
Почему вы используете проверку принадлежности строчной, когда вы, кажется, хотят т est для * целых * матчей. –
Кроме того, вам кажется, что требуется равенство, а не проверка - если слово == s является соответствующим условным – GoingTharn
, используйте понимание списка: '['|' .join ((i, t)) для i в c для k, t в z, если k == i] ['Anna Smith | IN1', 'John | IN2', 'Smith | IN4'] ' – Kasramvd