所以现在我有2个列表,
list1 = [[0,1],[0,2],[0,10]]
list2 = [[1, ['miniwok', 'food1']], [2,['chicken', 'food2']], [3,['duck', 'food3']], ..... , [10, ['pizza', 'food10']]]
我想比较list1中的所有第二个元素,如果它存在于list2中,则打印相应的列表。所以我想要的结果是这样的:
[[1, 'miniwok'],[2, 'chicken'],[10,'pizza']]
我尝试使用嵌套的for循环,但我认为我做错了
for x in range(len(list1)):
for y in range(1, len(list2)+1):
if(list1[x][1] == list2[y]):
result = [y, list2[y][0]]
fstore.append(result)
您可以将list2
转换为字典以加快查找速度:
list1 = [[0,1],[0,2],[0,10]]
list2 = [[1, ['miniwok', 'food1']], [2,['chicken', 'food2']], [3,['duck', 'food3']], [10, ['pizza', 'food10']]]
new_l2 = dict(list2)
result = [[b, k[a]] for a, b in list1 if (k := new_l2.get(b)) is not None]
输出:
[[1, 'miniwok'], [2, 'chicken'], [10, 'pizza']]
您可以做:
list1 = [[0,1],[0,2],[0,10]]
list2 = [[1, ['miniwok', 'food1']], [2,['chicken', 'food2']], [3,['duck', 'food3']],... , [10, ['pizza', 'food10']]]
numbers = [number[1] for number in list1]
[(item[0], item[1][0]) for item in list2 if item[0] in numbers]
输出:
[(1, 'miniwok'), (2, 'chicken'), (10, 'pizza')]
当然,如果需要,可以用“ []”切换创建元组列表的列表理解中的“()”,以创建列表列表。
您的代码在通过索引访问值时遇到了一些问题,在使用fstore之前未将其分配为空列表。
答案的正确版本在这里-
list1 = [[0,1],[0,2],[0,10]]
list2 = [[1, ['miniwok', 'food1']], [2,['chicken', 'food2']], [3,['duck', 'food3']], [10, ['pizza', 'food10']]]
fstore = []
for x in range(len(list1)):
for y in range(len(list2)):
if(list1[x][1] == list2[y][0]):
result = [list2[y][0], list2[y][1][0] ]
fstore.append(result)
break
fstore的内容:
[[1, 'miniwok'], [2, 'chicken'], [10, 'pizza']]
希望对您有帮助。如有疑问,可以在评论中提问。 :)