在检查不同集合中的元素成员时修复多个 elif

如果这是重复的,我深表歉意,但我找不到可以帮助我弄清楚我的确切问题的问题,所以我想我会在我的第一个堆栈溢出帖子中试一试。


我有一个字符串列表和大约 10 个不同的字符串集,我想根据每个字符串所在的集合执行不同的操作(现在,我可以假设这些集合不重叠)。如果它不在其中任何一个中,那么我就继续。现在我只有 10 个 if/elifs,它看起来有点低效,我想知道是否有任何方法可以改进它?


举个例子:


sandwich_ingredients = ["bacon", "cheese", "bread", "lettuce", "car"]

vegetables = {"cucumber", "lettuce", "onion", "potato", "carrot"}

meats = {...}

carbs = {...}

dairy = {...}

for ingredient in pizza_ingredients:

    if ingredient in vegetables:

        print("veggie!")

    elif ingredient in meats:

        print("meat!")

    elif ingredient in carbs:

        print("carb!")

    elif ingredient in dairy:

        print("dairy!")

    else:

        continue

正如你所看到的,如果我有更多的集合,它会变得有点长和笨拙......而且我不只是打印出集合的名称,这只是一个例子来帮助展示我想要弄清楚的东西出去。:) 非常感谢您的帮助!


编辑:我需要知道在哪个集合中找到了打印示例 btw


UYOU
浏览 88回答 2
2回答

米琪卡哇伊

将所有成分类别放入一个结构中,并循环遍历它们:vegetables = {"cucumber", "lettuce", "onion", "potato", "carrot"}meats = {...}carbs = {...}dairy = {...}all_categories = {    "vegetables": vegetables,    "meats": meats,    "carbs": carbs,    "dairy": dairy,}for ingredient in pizza_ingredients:    for category_name, category_items in all_categories.items():        if ingredient in category_items:            print(category_name)    如果你不需要category_name,定义all_categories为列表而不是字典

泛舟湖上清波郎朗

Python 不知道你的集合是互斥的。因此,需要 elif。如果您愿意通过将元素映射到它们的集合名称来预先计算它们的分离,那么您可以删除 elif。喜欢:X = {1,2,3}Y = 'abc'ALL = {1:"X",2:"X",3:"X",'a':'Y','b':'Y','c':'Y'}for i in ingredients:    name_of_set = ALL[i]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python