如何比较一个列表中的重复项目的两个列表?

时间:2012-10-20 16:58:27

标签: python list compare

我需要将list_a与其他许多人进行比较。当其他列表中有重复的项目时,我的问题就开始了(在other_b中有两个k)。

我的目标是过滤掉所有具有相同项目的列表(最多三个匹配的项目)。

list_a =  ['j','k','a','7']
other_b =  ['k', 'j', 'k', 'q']
other_c = ['k','k','9','k']

>>>filter(lambda x: not x in list_a,other_b)
['q']

我需要一种能够返回['k','q']的方法,因为'k'在list_a中只出现一次。

将list_a和other_c与set()进行比较对我的目的不利,因为它只返回一个元素:k。我需要['k','9','k']

我希望我足够清楚。

谢谢

1 个答案:

答案 0 :(得分:1)

以下函数返回所需的新列表,将list_a作为第一个参数,other_b作为第二个参数:

def my_comp(my_list, other_list):
    other_cop = other_list[:]
    for x in my_list:
        try:
            other_cop.remove(x)
        except ValueError:
            pass
    return other_cop

它复制other_list并从副本中删除my_list中的每个元素。因为如果要移除的元素不在other_list中,remove会引发我们必须捕获的ValueError,并且不会对此异常执行任何操作。