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

如何匹配食谱字典食材与供应字典并输出供应商关联信息?

问题描述

现有三个Python字典:

recipedict = {'sandwich':['a buttered sandwich',[['bread','13'],['butter','4']]]}
supplydict = {'bread':['150','15','james'],'butter':['15','12','allen'],'sugar':['15','12','marc']}
supplierdict = {"james":'12345234',"allen":'17682342'}

需求:检查recipedict中第二个值的内层食材元素(bread、butter)是否存在于supplydict的键中;若存在,获取supplydict对应值中的供应商(james、allen),再从supplierdict中取出该供应商的联系方式,最终按如下格式输出:

ingredient: bread

amount needed: 13

supplier: james

supplier contact: 12345234



ingredient: butter

amount needed: 4

supplier: allen

supplier contact: 17682342

本人尝试编写了如下代码,但仅能输出整列表及关联字典值,无法实现预期格式输出:

def flatten(l):
    return [item for sublist in l for item in sublist]

for key, value in recipedict.items():
    onevalue = value[1]
    #print(onevalue)
    actuallist = [item[0] for item in onevalue]

    valew = []
    for k in actuallist:
        if k in supplydict:
            
            valuee = supplydict.get(k)
            valew.append(valuee[2])

    print(valew)

    z = flatten(onevalue)
    #print(y)

    n = 1
    word = valew
    for i in range(n, len(onevalue) + n, n + 1):
        onevalue.insert(i, word)

    print(onevalue)

请提供正确的实现方案。


正确实现方案

直接遍历食谱内的食材列表,逐个校验并提取对应信息,按要求格式输出即可,代码如下:

# 遍历食谱字典中的所有食谱
for _, recipe_content in recipedict.items():
    # 取出当前食谱的食材列表(对应值的第二个元素)
    ingredient_list = recipe_content[1]
    # 遍历每个食材的名称和所需数量
    for ing_name, ing_amount in ingredient_list:
        # 检查该食材是否有供应记录
        if ing_name in supplydict:
            # 提取供应商名称(supplydict对应值的第三个元素)
            supplier_name = supplydict[ing_name][2]
            # 提取供应商联系方式,默认显示"联系方式未知"避免键不存在报错
            supplier_contact = supplierdict.get(supplier_name, "联系方式未知")
            # 按指定格式输出,每个食材块后加三个换行分隔
            print(f"ingredient: {ing_name}\n")
            print(f"amount needed: {ing_amount}\n")
            print(f"supplier: {supplier_name}\n")
            print(f"supplier contact: {supplier_contact}\n\n\n")

代码逻辑说明:

  1. 遍历recipedict时忽略食谱名称(用_占位),直接取出包含食材的列表;
  2. 对每个食材解构出名称和所需数量,判断是否在supplydict中;
  3. 存在则从supplydict中取供应商名称,再用该名称从supplierdict中获取联系方式;
  4. 使用格式化字符串严格匹配要求的输出格式,每个食材信息块之间保留三个换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:50:33