我有一个名为list a的列表列表,其中包含注册ID和参与者数量的详细信息。
lista=[["222",3],["333",3],["122",4]]
我还有另一份清单清单,其中列有公寓名称和床位数。
listb=[["lily",4],["arnica",3],["maple",3],["aron",3]]
我需要将lista第二列与list b第二列匹配一次。
由于我将参与者的数量分配给床位数,因此元素的匹配只需要进行一次。匹配完成后,我需要打印两个仅匹配一次的元素。我不想要多个匹配,我需要一个匹配如下:
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])
但它会产生错误。我该怎么办?
答案 0 :(得分:0)
你所做的是正确的,但你必须在找到可能的匹配后终止循环,否则你会得到多个匹配。
我认为这对你有用
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])