当'list1'的第二个列元素与'list2循环中的元素匹配时,我想从'list1'中获取内部列表'
我有一个这样的列表:
list1=
[
[1546,'token1',12,442],
[23,'token2',4,542],
[6,'token3',34,462],
[336,'token4',45,642],
[146,'token5',43,62],
]
和另一个列表:
list2=['token1','token2','token3','token4','token5']
for element in list2:
如果要 element == list1第二个column元素(即'token1'== list1的第二个colomn元素'token1')在这里,我想要
然后我得到清单
list1 中的 [ID,element,value1,value2] (即 [1546,'token1',12,442] )。
答案 0 :(得分:1)
您可以尝试:
dict_from_list_1 = {e[1]: e for e in list1}
for element in list2:
if element in dict_from_list_1:
print(dict_from_list_1[element])
答案 1 :(得分:0)
列表理解是一种非常简单而强大的方法:
lista = [[i for i in list1 if token in i] for token in list2]
print([each[0] for each in lista if len(each)])
输出:
[[1546, 'token1', 12, 442], [23, 'token2', 4, 542], [6, 'token3', 34,462], [336, 'token4', 45, 642], [146, 'token5', 43, 62]]
答案 2 :(得分:0)
您可以使用dictcomp创建字典来进行查找,并使用listcomp将数据提取到列表中:
d = {i[1]: i for i in list1}
l = [d[i] for i in list2]
答案 3 :(得分:0)
这是完成所需结果的两种方法。让我展示很长的路要走:
for i in list1:
if i[1] in list2:
print (i)
然后在这里,我们可以使用Generator一行实现上述目标。
[element for element in list1 if element[1] in list2]
希望这会有所帮助。