如何将两个列表与一个列表中的重复项目进行比较



我需要将list_a与许多其他人进行比较。当其他列表中有一个重复的项目时,我的问题开始(其他_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和ether_c与set()进行比较不适合我的目的,因为它只会返回一个元素:k。虽然我需要['k','9','k']

我希望我足够清楚。

谢谢

以下功能将返回您想要的新列表,当将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的所有Elemnt。因为如果要删除的元素不在 other_list中,则remove将提出一个ValueError,我们必须抓住,并且在此外什么也不做。

相关内容

  • 没有找到相关文章

最新更新