Сравнение списка со списком списков и возврат другого элемента из списка списка

У меня есть список - ответы:

[0,1] 

и еще список-список-вопросы:

[[0,ABC], [1,DEF], [3,XYZ]]

Как я могу сравнить 2 и вернуться

 ABC, DEF 

на основе сравнения всех элементов в ответах на первые элементы в списке списка?

Неясно, важен ли порядок вывода, и если да, то определяется ли он порядком ответов или вопросов?

Mark Bailey 26.04.2019 01:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать понимание списка и оставить вторые элементы в questions если первый элемент содержится в answers :

answers = set([0,1])
[i[1] for i in questions if i[0] in answers]
# ['ABC', 'DEF']

Примечание: Использование набора вместо списка помогает снизить сложность с O(N*M) до O(N), как предложил @RafaelC, где N — это длина вопросов, а M длина ответов.

Возможно, я хочу изменить answers, чтобы стать set. Сложность идет от O(N*M) к O(N), где N — длина вопросов, а M — длина ответов.

rafaelc 25.04.2019 22:45

Пытаться:

[i[1] for i in lst2 if i[0] in lst1]

Хотя я не понимаю, какое это имеет отношение к пандам.

Поскольку вы упомянули pandas

pd.DataFrame([[0,'ABC'], [1,'DEF'], [3,'XYZ']]).loc[lambda x : x[0].isin([0,1])][1].tolist()
Out[494]: ['ABC', 'DEF']

Другие вопросы по теме