Python如何用for循环正确打印字典并实现指定格式化输出?
Python字典元素格式化打印的正确实现
问题原因
原代码的错误在于嵌套了不必要的内层循环:外层通过items()已经获取到每个键值对的key和对应列表value,但内层又遍历了字典所有的values(),导致每个key会重复输出所有的列表值,最终输出不符合预期。
正确实现方式
方法一:使用f-string格式化对齐(Python 3.6+)
直接利用外层循环拿到的键和对应列表,通过f-string设置左对齐宽度,保证输出格式整齐:
stock_dict1 = {'naruto': [900, 170], 'onepiece': [600, 60]} for key, value in stock_dict1.items(): # <10 表示键左对齐,占用10个字符宽度 print(f"{key:<10} {value[0]} {value[1]}")
输出结果:
naruto 900 170 onepiece 600 60
方法二:使用str.format()(兼容Python 3.5及更早版本)
如果使用旧版Python,可通过str.format()实现相同效果:
stock_dict1 = {'naruto': [900, 170], 'onepiece': [600, 60]} for key, value in stock_dict1.items(): print("{:<10} {} {}".format(key, value[0], value[1]))
补充说明
<10是对齐参数,可根据键的长度调整数字,比如改成<12会让键的占位更宽,适配更长的键名。- 若列表元素数量固定,也可以直接解包列表简化代码,比如
print(f"{key:<10} {' '.join(map(str, value))}")。
内容的提问来源于stack exchange,提问作者khamsablao laowords
相关产品推荐
相关产品推荐

