如何将给定字符串列表转换为满足指定数值计算要求的Python字典
问题分析与实现方案
原有代码错误点
- 拆分逻辑错误:冒号后拆分出的数字串仅用逗号分隔,不存在
*符号,执行c_.split('*')会得到长度为1的列表,取下标为1的元素会直接抛出索引越界错误 - 逻辑不符合需求:你当前代码是尝试构造嵌套子字典,但需求仅需要将三个数字按规则求和作为键对应的值,不需要嵌套结构
- 缺少计算逻辑:完全没有实现「前两个数字乘5、最后一个数字乘9再求和」的核心规则
- 输出结构不符:返回结果为嵌套字典,和要求的结构不一致,另外你给出的预期示例中方括号属于笔误,字典外层应使用大括号包裹。
基础实现代码
def dictcal(calories): res = dict() for food_item in calories: # 拆分食材名称和数值部分 food_name, num_part = food_item.split(':') # 拆分三个数值并转为整数 a, b, c = map(int, num_part.split(',')) # 按规则计算总和 cal_sum = a * 5 + b * 5 + c * 9 # 如果需要和你给出的示例一致存为单元素集合,替换为 cal_sum = {cal_sum} res[food_name] = cal_sum return res
调用测试
input_list = ["Cabbage:4,2,0", "Carrot:9,1,5", "Fatty Pork:431,1,5", "Pineapple:7,1,0", "Steak Meat:5,20,10", "Rabbit Meat:7,2,20"] print(dictcal(input_list))
输出结果(数值类型值)
{'Cabbage': 30, 'Carrot': 95, 'Fatty Pork': 2205, 'Pineapple': 40, 'Steak Meat': 215, 'Rabbit Meat': 225}
输出结果(单元素集合类型值,匹配你的示例格式)
{'Cabbage': {30}, 'Carrot': {95}, 'Fatty Pork': {2205}, 'Pineapple': {40}, 'Steak Meat': {215}, 'Rabbit Meat': {225}}
内容的提问来源于stack exchange,提问作者Joshua Bradley
相关产品推荐
相关产品推荐

