【问题标题】:Python - Check if any item exists in all list of listsPython - 检查所有列表中是否存在任何项目
【发布时间】:2020-07-21 02:27:30
【问题描述】:

我有一个 Python (python3) 中的列表列表。示例:

list_of_lists = [[vendor1, vendor2],
                 [vendor2, vendor5, vendor10],
                 [vendor1, vendor2, vendor7]]

我要做的是找出列表列表中的所有列表中是否有一个项目。我遇到的大多数示例用户都知道要在他们的列表列表中搜索什么值,因此我在这里提出了一个单独的问题,因为我没有要搜索的起始值。上述列表的结果将返回 vendor2,因为它显示在所有列表中。

任何帮助/一般“看这个方向”的建议表示赞赏。谢谢

【问题讨论】:

  • 供应商是 str 还是 Class?

标签: python python-3.x


【解决方案1】:

假设list_of_lists 的所有元素都是字符串。使用setintersection 概念。为每个子列表创建一个集合并对所有子列表进行交集

In [3]: list_of_lists = [["vendor1", "vendor2"],
   ...:                  ["vendor2", "vendor5", "vendor10"],
   ...:                  ["vendor1", "vendor2", "vendor7"]]

In [4]: set.intersection(*[set(x) for x in list_of_lists])
Out[4]: {'vendor2'}

【讨论】:

    【解决方案2】:

    也可以试试reduce:

    from functools import reduce
    
    list_of_lists = [["vendor1", "vendor2"],
                     ["vendor2", "vendor5", "vendor10"],
                     ["vendor1", "vendor2", "vendor7"]]
    
    
    result = list(reduce(lambda a, b: set(a) & set(b), list_of_lists))
    # ['vendor2']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2016-02-16
      • 2021-06-25
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多