如何在Python中使用生成器表达式合并多个集合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中使用生成器表达式合并多个集合?相关的知识,希望对你有一定的参考价值。

我想加入从类实例中获取的多个集合。以下是我正在使用的内容和我尝试过的内容的示例。改变班级不是一种选择。

class Salad:
   def __init__(self, dressing, veggies, others):
      self.dressing = dressing
      self.veggies = veggies
      self.others = others

SALADS = {
   'cesar'  : Salad('cesar',  {'lettuce', 'tomato'},  {'chicken', 'cheese'}),
   'taco'   : Salad('salsa',  {'lettuce'},            {'cheese', 'chili', 'nachos'})
}

我希望OTHER_INGREDIENTS成为{'chicken', 'cheese', 'chili', 'nachos'}。所以我尝试过:

OTHER_INGREDIENTS = sum((salad.others for salad in SALADS.values()), set())

这给了我一个错误“+不支持的操作数类型+:'set'和'set'虽然。我该怎么做?

如果可能的话,我更愿意使用Python 2.7而无需额外的导入。

答案

您可以使用set中的函数union:

OTHER_INGREDIENTS = set().union(*(salad.others for salad in SALADS.values()))

产量

{'chili', 'cheese', 'chicken', 'nachos'}
另一答案

您可以使用集合理解:

OTHER_INGREDIENTS = {
    element
    for salad in SALADS.values()
    for element in salad.others
}

以上是关于如何在Python中使用生成器表达式合并多个集合?的主要内容,如果未能解决你的问题,请参考以下文章

在python中使用multiindex合并多个数据框

如何在 Laravel 中正确合并多个集合

Python入门-4控制语句:10推导式创建序列-列表推导式-字典推导式-集合推导式-生成器推导式

流畅的python第十四章可迭代的对象,迭代器和生成器学习记录

如何使用 Python Pandas 合并多个 CSV 文件

如何合并多个pdf文件(在运行时生成)?