如何将字符串列表转换为键对应值可累加的字典?
解决字符串列表生成累加字典的问题
修复后的代码
def build_total_dict(str_list): total_dic = {} for string in str_list: parts = string.split() # 将开头的数字转为整数,用于后续累加计算 score = int(parts[0]) # 遍历分割后除数字外的所有单词 for word in parts[1:]: # 用get方法获取当前单词的已有值(不存在则取0),加上当前score后更新 total_dic[word] = total_dic.get(word, 0) + score return total_dic # 测试示例 sample_list = ['4 it was amazing', '0 it was awful', '3 it was ok'] print(build_total_dict(sample_list))
改进说明
- 解决值被覆盖的问题:原代码直接赋值会覆盖已有键的值,改用
total_dic.get(word, 0) + score,既实现了累加逻辑,又把字符串类型的数字转为整数,避免出现字符串拼接的错误。 - 适配任意单词数量:原代码硬编码取固定索引的单词,改用
parts[1:]获取分割后除第一个数字外的所有单词,再循环遍历,不管后续有多少个单词都能正确处理,比如输入'5 this is a multi-word example',所有后续单词都会被累加5分。
测试结果
运行代码后输出与期望一致:
{'it': 7, 'was': 7, 'amazing': 4, 'awful': 0, 'ok': 3}
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

