Сравнение списка со списком списков и возврат другого элемента из списка списков - PullRequest
1 голос
/ 25 апреля 2019

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

[0,1] 

и другой список - вопросы:

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

Как сравнить 2 и вернуть

 ABC, DEF 

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

Ответы [ 3 ]

2 голосов
/ 25 апреля 2019

Вы можете использовать список и оставить второй элемент в 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 - длина ответов

.
1 голос
/ 25 апреля 2019

Так как вы упомянули pandas

pd.DataFrame([[0,'ABC'], [1,'DEF'], [3,'XYZ']]).loc[lambda x : x[0].isin([0,1])][1].tolist()
Out[494]: ['ABC', 'DEF']
0 голосов
/ 25 апреля 2019

Попробуйте:

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

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

...