【问题标题】:How to find match items from two lists? [duplicate]如何从两个列表中查找匹配项? [复制]
【发布时间】:2012-07-21 20:05:17
【问题描述】:

可能重复:
Python: How to find list intersection?

我在 .txt 中有两个数据列表

data1 = "name1", "name2", "name3", "name4" etc.

data2 = "name3", "name6", "name10" etc.

我想找出两个列表中出现的名称 我该怎么做?

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    使用sets:

    set(data1) & set(data2)
    

    & 运算符的意思是“给我这两个集合的交集”;或者,您可以使用.intersection 方法:

    set(data1).intersection(data2)
    

    【讨论】:

    • 对,这对我来说非常有效。谢谢!
    • 我个人觉得 .intersection 更具可读性,但正如你所说,他们做同样的事情。
    • @ivanhoifung 如果这解决了您的问题,您应该在答案旁边accept this answer by clicking the checkmark。它会奖励双方一些积分,并将此问题标记为已解决。
    • @PeterGraham:在这种情况下,您将使用 Counter() 对象,它们是多重集。
    • @Maikefer:集合不保留排序。在这种情况下,仅为data2 创建一个集合,并使用一个列表推导来测试该集合的值:data2_set = set(data2)[v for v in data1 if v in data2]
    【解决方案2】:
    nf = [x for x in data1 if x in data2]
    nf
    

    将返回两个列表中的共同项目

    【讨论】:

      【解决方案3】:
      >>> [ name for name in data1 if name in data2 ]
      ['name3']
      

      【讨论】:

        【解决方案4】:
        For a in data1:
            for b in data2:
                if a==b:
                print(a)
        

        这是一种方法,但不是最好的方法

        【讨论】:

        • “For”中的错字和缺少缩进。
        猜你喜欢
        • 2013-08-12
        • 2018-02-01
        • 1970-01-01
        • 2017-07-25
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多