我有一个列表-答案:
[0,1]
和另一个列表列表-问题:
[[0,ABC], [1,DEF], [3,XYZ]]
如何比较2并返回
ABC, DEF
基于对列表中第一个元素的答案中所有元素的比较?
答案 0 :(得分:2)
您可以使用list comprehension并将第二项保留在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 :(得分:1)
自从您提到pandas
pd.DataFrame([[0,'ABC'], [1,'DEF'], [3,'XYZ']]).loc[lambda x : x[0].isin([0,1])][1].tolist()
Out[494]: ['ABC', 'DEF']
答案 2 :(得分:0)
尝试:
[i[1] for i in lst2 if i[0] in lst1]
尽管我不明白这与熊猫有什么关系。