Как создать список из совпадающего списка элементов с большим вложенным списком - PullRequest
0 голосов
/ 28 мая 2020

У меня простой список: lst1 = ['a', 'b', 'c']

У меня также есть вложенный список с указанными выше значениями и другими: lst2 = [ ('a',[ 'aaa', 'bbb']), ('b',[ 'xxx', 'yyy']), ('c',['ww', 'mm', 'ii']), ('e',['rr', 'rr', 'tt'])]

Я пытался сопоставить все общие элементы в lst1 с найденными в lst2 и создать новый вложенный список с общими элементами плюс вложенными значениями:

lst3 = [('a',[ 'aaa', 'bbb']), ('b',[ 'xxx', 'yyy']), ('c',['ww', 'mm', 'ii'])]

Мой код следующий:

lst3 = [] 
for i in lst2:
    if i in lst1 and lst2[0]:
       lst3.append(i)

Но lst3 оказывается пустым после выполнения l oop. Любые советы будут оценены.

спасибо

1 Ответ

1 голос
/ 28 мая 2020

Проблема с вашим кодом

Вы проверяете if i in lst1 and lst2[0]:, который никогда не приходит True. потому что ('a',[ 'aaa', 'bbb']) отсутствует в lst1.

Решение

lst1 = ['a', 'b', 'c']

lst2 = [ ('a',[ 'aaa', 'bbb']), ('b',[ 'xxx', 'yyy']), ('c',['ww', 'mm', 'ii']), ('e',['rr', 'rr', 'tt'])]


ans = []
for i in lst2:
    x = i[0]
    if x in lst1:
        ans.append(i)


print(ans)

Вывод

[('a', ['aaa', 'bbb']), ('b', ['xxx', 'yyy']), ('c', ['ww', 'mm', 'ii'])]

Если вы получили свой ответ, примите его, иначе прокомментируйте проблему.

...