如何格式化字典输出?实现Python函数结果逐行展示
解决方案
你的原代码通过将字典转为字符串后替换符号的方式生成输出,这种方式不够灵活,还不必要地反转了字典键值对。要实现每行一个条目的格式,直接遍历水果字典的键值对生成对应行内容即可,具体修改如下:
import re import pprint def total_fruit_per_sort(): number_found = re.findall(total_amount_fruit_regex(), verdi50) fruit_dict = {} for n, f in number_found: fruit_dict[f] = fruit_dict.get(f, 0) + int(n) # 生成每行的格式化字符串 result_lines = [f"{fruit}: {count}" for fruit, count in fruit_dict.items()] # 用换行符拼接所有行 result = "\n".join(result_lines) # 打印结果并返回 print(result) return result total_fruit_per_sort()
关键修改说明:
- 移除了多余的字典反转操作:原代码中
{value: key for value, key in fruit_dict.items()}是将键值对反转,而你需要的输出格式是水果名在前、数量在后,原字典{水果名: 数量}的结构已经符合要求,无需反转。 - 通过列表推导式生成每行内容,再用
"\n".join()拼接成带换行符的字符串,直接打印就能得到每行一个条目的效果。 - 原函数中
pprint.pprint()返回值为None,之前的print(total_fruit_per_sort())会额外打印None,修改后直接在函数内打印结果,避免了多余输出。
如果要保留pprint的使用,也可以直接传入拼接后的字符串:
import re import pprint def total_fruit_per_sort(): number_found = re.findall(total_amount_fruit_regex(), verdi50) fruit_dict = {} for n, f in number_found: fruit_dict[f] = fruit_dict.get(f, 0) + int(n) result_lines = [f"{fruit}: {count}" for fruit, count in fruit_dict.items()] result = "\n".join(result_lines) pprint.pprint(result) return result total_fruit_per_sort()
修改后输出会完全符合你的需求:
Watermeloenen: 466 Appels: 688 Sinaasappels: 803
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

