【问题标题】:How To Compare Items In Two Lists Python 3.3如何比较两个列表中的项目 Python 3.3
【发布时间】:2015-03-23 12:28:03
【问题描述】:

我尝试使用 cmp(list1, list2) 得知 Python 3.3 不再支持它。我尝试了许多其他复杂的方法,但都没有奏效。

我有两个列表,它们都只包含单词,我希望它检查两者中有多少单词具有特征,并返回多少单词。

【问题讨论】:

    标签: python list python-3.x comparison


    【解决方案1】:

    您可以像这样使用& 找到集合交集的长度:

    len(set(list1) & set(list2))
    

    示例:

    >>>len(set(['cat','dog','pup']) & set(['rat','cat','wolf']))
    1
    >>>set(['cat','dog','pup']) & set(['rat','cat','wolf'])
    {'cat'}
    

    或者,如果您出于某种原因不想使用集合,您可以随时使用collections.Counter,它支持大多数多集合操作:

    >>> from collections import Counter 
    >>> print(list((Counter(['cat','dog','wolf']) & Counter(['pig','fish','cat'])).elements()))
    ['cat']
    

    【讨论】:

    • 我不断收到 'TypeError: unhashable type: 'list'' :/
    • @SirBuncey 您当前尝试的代码到底是什么?
    • 啊!我已经修好了。我现在已经开始使用元组了,谢谢。
    • @SirBuncey 很高兴您解决了您的问题,但请注意按照我概述的方式进行操作没有错误 :)
    • 这只是我糟糕的编码 ;)
    【解决方案2】:

    如果你只想计算有多少单词是常见的

    common = sum(1 for i in list1 if i in list2)
    

    如果你真的想得到共享词列表

    common_words = set(list1).intersection(list2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 2021-03-11
      相关资源
      最近更新 更多