如何在python中将一个列表与另一个列表匹配一次?

时间:2017-05-19 03:33:54

标签: python

我有一个名为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])

但它会产生错误。我该怎么办?

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])