Найти совпадающие значения в списке списков с помощью python
Я пытаюсь перебрать список списков в python 2.7.5 и вернуть те, где первое значение найдено во втором списке, примерно так:
#python 2.7.5 list1 = ['aa', 'ab', 'bb', 'bc', 'cc'] list2 = [['aa', 1, 3, 7],['de', 2, 2, 1],['bc', 3, 4, 4]] list3 = [] for x in list1: for y in list2: if x == y: list3.append(y)
Поэтому я бы хотел, чтобы list3 содержал [['aa',1,3,7],['bc', 3, 4, 4]]
но вместо этого я просто получаю весь список2.
- эффективный алгоритм редактирования списка
- Среднее значение списка неаварийных списков
- выберите первые n элементов списка без использования цикла.
- Преобразование списка списков в список целых чисел
- как получить значение из списка кортежей и создать новый список
Попробуйте более простой подход, который ближе к тому, что вы хотите:
for e in list2: if e[0] in list1: list3.append(e)
Вам нужно e[0]
поскольку list2
– список списков. Вы также можете записать это в одной строке с помощью функции filter () :
list3 = filter(lambda e: e[0] in list1, list2)
или используя понимание списка :
list3 = [e for e in list2 if e[0] in list1]
В вашем коде есть ошибка. Вам нужно x == y [0] вместо x == y. Последний сравнивает строку со списком.
Вы также можете использовать списки
>>> [x for x in list2 if x[0] in list1] [['aa', 1, 3, 7],['bc', 3, 4, 4]]
Похоже, ваша проблема связана с тем, что вы пытаетесь сравнить список элементов со списком списка элементов.
Если вы пройдете цикл for
, вы увидите, что на первой итерации вы сравниваете 'aa'
с ['aa', 1, 3, 7]
, что, вероятно, не то, что вы хотели бы сделать.
Если вы просто сравниваете первый элемент, вам нужно будет изменить цикл for
на:
for x in list1: for y in list2: if x == y[0]: list3.append(y)
- хранилище python в переменной self vs. передача в def
- что такое shebang по умолчанию, если ни один не указан в скрипте python?
- Особенности членства в списке
- Список внутри понимания списка
- Как преобразовать эту строку в список списков?
- Поиск определенного значения в списке
- Сравнить список в python для определения равенства
- Учет списка для извлечения списка кортежей из словаря
- Python – Итерирование по списку списка
- как изменить значение индекса в списках python
- Множественное понимание списка в едином понимании списка