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

2024-06-10 16:31:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为list a的列表,其中包含注册id的详细信息和参与者的数量

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

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


Tags: in元素列表for数量详细信息unit参与者
1条回答
网友
1楼 · 发布于 2024-06-10 16:31:32

您所做的是正确的,但是您必须在找到可能的匹配项之后终止循环,否则您将得到多个匹配项

我想这对你有用

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

相关问题 更多 >