Python如何打印同键多值字典且不显示方括号?
调整学生成绩输出格式的解决方案
需求与现状
需要实现的功能:为多名学生记录数学、物理、化学三门科目成绩,以学生姓名为键、成绩列表为值存入字典,最终按以下格式输出:
student1 : mark1, mark2, mark3 student2 : mark1, mark2, mark3
当前使用的代码:
data = {} while True: stuName = input("Student Name: ") math_marks = int(input("Math marks: ")) physics_marks = int(input("Physics Marks: ")) chemistry_marks = int(input("Chemistry Marks: ")) data[stuName] = [math_marks, physics_marks, chemistry_marks] quit = input("Quit? ") if quit == 'q': break print(*[str(k) + ' : ' + str(v) for k, v in data.items()], sep='\n')
但当前输出会保留列表的方括号,不符合预期:
student1 : [mark1, mark2, mark3] student2 : [mark1, mark2, mark3]
修改方法
问题出在直接将成绩列表v转成字符串时,会保留列表的[]符号。只需要把成绩列表转换成用逗号分隔的字符串即可,用', '.join(map(str, v))实现——先把列表里的每个数字转成字符串,再用, 连接起来。
修改后的代码:
data = {} while True: stuName = input("Student Name: ") math_marks = int(input("Math marks: ")) physics_marks = int(input("Physics Marks: ")) chemistry_marks = int(input("Chemistry Marks: ")) data[stuName] = [math_marks, physics_marks, chemistry_marks] quit = input("Quit? ") if quit == 'q': break # 关键修改:将成绩列表转为逗号分隔的字符串 print(*[f"{k} : {', '.join(map(str, v))}" for k, v in data.items()], sep='\n')
修改后就能得到符合要求的输出:
student1 : 90, 85, 92 student2 : 78, 88, 80
内容的提问来源于stack exchange,提问作者justGettingStarted
相关产品推荐
相关产品推荐

