2017-05-19 114 views
-2

我有一个名单列表名单,它有一个注册ID的详细信息和参加人数。如何在python中将一个列表与另一个列表匹配一次?

lista=[["222",3],["333",3],["122",4]] 

而且我还有另一个清单,其中有一个公寓名称和床位数目的详细信息。

listb=[["lily",4],["arnica",3],["maple",3],["aron",3]] 

我需要将列表第二列与列表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

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

我认为这会为你

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

谢谢,这解决了我小时的痛苦。非常有帮助! –

相关问题