在python中,如何只将一个列表与另一个列表匹配一次?
我有一个名为列表a的列表,其中包含注册id和参与者数量的详细信息在python中,如何只将一个列表与另一个列表匹配一次?,python,Python,我有一个名为列表a的列表,其中包含注册id和参与者数量的详细信息 lista=[["222",3],["333",3],["122",4]] 我还有另外一份名单,上面有公寓的名字和床位的详细信息 listb=[["lily",4],["arnica",3],["maple",3],["aron",3]] 我只需要将lista第二列与ListB第二列匹配一次 由于我将参与者的数量分配给床位的数量,因此元素的匹配只需进行一次。一旦匹配完成,我需要打印出两个元素只匹配一次。我不需要多个匹配项,我
lista=[["222",3],["333",3],["122",4]]
我还有另外一份名单,上面有公寓的名字和床位的详细信息
listb=[["lily",4],["arnica",3],["maple",3],["aron",3]]
我只需要将lista第二列与ListB第二列匹配一次
由于我将参与者的数量分配给床位的数量,因此元素的匹配只需进行一次。一旦匹配完成,我需要打印出两个元素只匹配一次。我不需要多个匹配项,我需要一个匹配项,如下所示:
listc=[["222",3,"arnica",3]]
我写了代码:
for unit in list a:
for nit in list b:
if unit[1]==nit[1]:
print(unit,nit)
lista.remove(unit[0])
lista.remove(unit[1])
但它会产生一个错误。我该怎么办?您所做的是正确的,但是您必须在找到可能的匹配项后终止循环,否则您将获得多个匹配项 我想这对你有用
lista=[["222",3],["333",3],["122",4]]
listb=[["lily",4],["arnica",3],["maple",3],["aron",3]]
for unit in lista :
for nit in listb :
if unit[1]==nit[1]:
print(unit,nit)
break
listb.remove(nit)
产出
(['222', 3], ['arnica', 3])
(['333', 3], ['maple', 3])
(['122', 4], ['lily', 4])