【问题标题】:How to compare two lists with duplicated items in one list?如何将两个列表与一个列表中的重复项进行比较?
【发布时间】:2012-10-20 16:58:27
【问题描述】:

我需要将 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']

我希望我已经足够清楚了。

谢谢

【问题讨论】:

  • 我不完全确定这个比较是什么。能再解释一下吗?

标签: python list compare


【解决方案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,我们必须捕获它并且对此异常不执行任何操作。

【讨论】:

  • 非常感谢,这很有帮助! ,我必须学习一些新东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2018-06-02
  • 2021-10-28
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多