为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2023-06-13 11:14:03
如果这是重复的,我深表歉意,但我找不到可以帮助我弄清楚我的确切问题的问题,所以我想我会在我的第一个堆栈溢出帖子中试一试。我有一个字符串列表和大约 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
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

将所有成分类别放入一个结构中,并循环遍历它们:


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为列表而不是字典


查看完整回答
反对 回复 2023-06-13
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

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]


查看完整回答
反对 回复 2023-06-13
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信