【问题标题】:是否有比较列表中项目的功能?
【发布时间】:2022-01-23 14:43:03
【问题描述】:

有没有办法让我比较两个不同的列表,只取出相似的? 示例:

list1 = [(JOHN,BLUE,BANANA),(JOHN,BLUE, APPLE),(MARY,PURPLE,GRAPE),(BEN,GREEN,WATERMELON)
list2 = [(JOHN,BLUE),(MARY,PURPLE),(TOMMY,PINK)]
OUTPUT:
[(JOHN, BLUE, BANANA),(JOHN, BLUE, APPLE),(MARY, PURPLE, GRAPE)]

【问题讨论】:

  • “相似”到底是什么意思?

标签: python python-3.x list compare


【解决方案1】:

您可以尝试以下基本方法:

list1 = [("JOHN","BLUE","BANANA"),("JOHN","BLUE", "APPLE"),("MARY","PURPLE","GRAPE"),("BEN","GREEN","WATERMELON")]
list2 = [("JOHN","BLUE"),("MARY","PURPLE"),("TOMMY","PINK")]

tmp = set()
for i in list1:
    for j in list2:
        if len(set(i)&set(j)) > 0:
            tmp.add(i)
print tmp

结果:

set([('MARY', 'PURPLE', 'GRAPE'), ('JOHN', 'BLUE', 'BANANA'), ('JOHN', 'BLUE', 'APPLE')])

【讨论】:

    【解决方案2】:

    只需检查 list2 中 list1 中的 item[:2]

    list1 = [
        ('JOHN', 'BLUE',   'BANANA'),
        ('JOHN', 'BLUE',   'APPLE'),
        ('MARY', 'PURPLE', 'GRAPE'),
        ('BEN',  'GREEN',  'WATERMELON'),
    ]
    list2 = [
        ('JOHN',  'BLUE'),
        ('MARY',  'PURPLE'),
        ('TOMMY', 'PINK')]
    
    print([item for item in list1 if item[:2] in list2])
    
    [('JOHN', 'BLUE', 'BANANA'), ('JOHN', 'BLUE', 'APPLE'), ('MARY', 'PURPLE', 'GRAPE')]
    

    【讨论】:

      【解决方案3】:
      def common_member(a, b):
          a_set = set(a)
          b_set = set(b)
       
          if (a_set & b_set):
              print(a_set & b_set)
          else:
              print("No common elements")
      a = [JOHN,BLUE,BANANA),(JOHN,BLUE, APPLE),(MARY,PURPLE,GRAPE),(BEN,GREEN,WATERMELON]
      b = [(JOHN,BLUE),(MARY,PURPLE),(TOMMY,PINK)]
      common_member(a, b)
      

      【讨论】:

      • 好像得到了"No common elements"
      • 所以你可以添加可以添加和删除的元素
      • 我的意思是你的脚本没有得到提问者的请求输出。
      • 谈谈明天我正在做一些工作
      • 也许您对此提出了另一个问题
      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多