Skip to main content
 首页 » 编程设计

python之收集列表以查找两个列表 python 中的区别

2025年05月04日16zhoujg

下面是代码,为了比较两个列表,我使用了集合,因为我可以接受元素位置不同。脚本检查 list2 是否包含 list1 中的所有元素。这工作正常。现在我需要帮助,比较 list1 和 list2 时缺少什么或有什么不同。

list1 =  ['ab','cd','600','4','a=7777','b=7777'] 
list2 = ['ab', 'cd','600', '4','a=7777','b=7777'] 
if collections.Counter(list1) != collections.Counter(list): 
   print "something not matching  or missing list1 with list2" 
   print "help me what is missing or what different values between list1 and list2" 

预期输出:

   if  
   list1 =  ['ab','cd','600','4','a=7777','b=7777'] 
   list2 = ['ab', 'cd','600', '4','a=7777','b=7777'] 
 
   Expected output: 
   Do Not print anything. 
 
 
   elif 
   list1 =  ['ab','cd','600','4','a=7777','b=7777'] 
   list2 = ['ab', 'cd','600', '4','a=7777','b=77'] 
   Expected output: 
   print "MisMatch" 
   print "In list2 b=7777 should contain" 
 
   elif 
   list1 =  ['ab','cd','600','4','a=7777','b=7777'] 
   list2 = ['ab', 'cd','600','a=7777','b=7777'] 
   Expected output: 
   print "MisMatch" 
   print "In list2 4 is missing" 

请您参考如下方法:

您可能正在寻找一个集合:

>>> list1 =  ['ab','cd','600','4','a=7777','b=7777'] 
>>> list2 = ['ab', 'cd','600', '4','a=7777','b=77'] 
>>> set(list1) - set(list2)) 
{'b=7777'} 

请注意 set是一个:

Unordered collection of unique elements

因此它不会告诉您列表中缺少多少元素,而只会告诉您缺少哪些元素。

例如:

>>> list1 =  ['ab','cd','600','4','a=7777','b=7777', 'b=7777'] 
>>> list2 = ['ab', 'cd','600', '4','a=7777','b=77'] 
>>> set(list1) - set(list2) 
{'b=7777'} 

将仍然只输出一个元素,尽管在您的第一个列表中有 2 个元素。

如果您想跟踪这些重复项,请查看 @John La Rooy's answer .