You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python比对字典值与列表元素返回所有匹配键的代码问题求解

代码问题排查与修正

原代码错误点

  • 逻辑顺序错误:错误优先遍历用户饮食限制,而非先遍历餐厅校验全量限制,且首次匹配到单个限制的餐厅就直接返回,未完成全量餐厅和全量限制的校验
  • 排序和return位置错误:在首次匹配到符合单个限制的餐厅时就执行排序和返回,没有收集所有符合条件的结果
  • 匹配逻辑不符合要求:要求餐厅满足全部用户限制,原代码只要满足任意一个限制就会被加入结果

修正后代码

def no_you_pick(my_dict, my_list):
    output = []
    # 遍历所有餐厅
    for restaurant, tags in my_dict.items():
        # 标记当前餐厅是否满足所有限制
        is_valid = True
        for limit in my_list:
            if limit not in tags:
                is_valid = False
                break
        if is_valid:
            output.append(restaurant)
    # 全部校验完成后统一排序
    output.sort()
    # 判断返回结果
    if not output:
        return "Sorry, no restaurants meet your restrictions"
    return output

grading_scale={'Moes, Larrys, Curlys': ['vegetarian', 'vegan', 'gluten-free'], 'Hot Chili Pepper': ['vegetarian', 'gluten-free', 'vegan']}
guests_diet = ["vegetarian", "vegan", "gluten-free"]
print(no_you_pick(grading_scale, guests_diet))

运行结果

输出为预期的 ["Hot Chili Pepper", "Moes, Larrys, Curlys"],符合要求:未使用列表推导式,无匹配场景下直接返回提示字符串,不会被包裹在列表中。

内容的提问来源于stack exchange,提问作者PlumChy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:57:01