如何在不使用外部模块的情况下格式化打印电影售票与票房字典
需求说明
我有两个字典:
第一个字典记录电影的营收:
movie_collections_dict = {'Avatar':0, 'Titanic':0, 'StarWar':0} # 表示各电影的营收
第二个字典记录各电影不同票种的预订座位数:
ticket_bookings = { 'avatar': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0}, 'starwar': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0}, 'titanic': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0} } # 表示各电影不同票种的已预订座位数
需要将这两个字典按照以下格式打印输出:
adult child student senior concession Revenue Avatar 0 0 0 0 0 0 Titanic 0 0 0 0 0 0 StarWar 0 0 0 0 0 0
要求:不得使用pandas等任何外部模块。
实现代码
通过字符串格式化的对齐语法可以实现需求,具体代码如下:
movie_collections_dict = {'Avatar':0, 'Titanic':0, 'StarWar':0} ticket_bookings = { 'avatar': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0}, 'starwar': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0}, 'titanic': {'adult': 0, 'child': 0, 'concession': 0, 'senior': 0, 'student': 0} } # 定义表头列的顺序,和目标输出保持一致 header_cols = ['adult', 'child', 'student', 'senior', 'concession'] # 打印表头,用:<n>实现左对齐,n为列宽 print(f"{'':<10}{'adult':<6}{'child':<6}{'student':<8}{'senior':<7}{'concession':<11}{'Revenue':<6}") # 遍历每个电影,拼接对应数据并打印 for movie_name, revenue in movie_collections_dict.items(): movie_key = movie_name.lower() booking_data = ticket_bookings[movie_key] # 按表头顺序提取各票种数据 adult = booking_data['adult'] child = booking_data['child'] student = booking_data['student'] senior = booking_data['senior'] concession = booking_data['concession'] # 格式化打印行内容 print(f"{movie_name:<10}{adult:<6}{child:<6}{student:<8}{senior:<7}{concession:<11}{revenue:<6}")
代码说明
- 先定义表头列的顺序,确保输出列的排列和目标格式一致;
- 使用
:<n>的字符串格式化语法实现左对齐,其中n值根据目标格式的列宽调整; - 遍历营收字典的电影名称,将名称转为小写后匹配预订字典的键,提取对应票种的预订数据;
- 按照统一的格式拼接每行内容并打印,保证所有列对齐。
内容的提问来源于stack exchange,提问作者Mukund Panchal
相关产品推荐
相关产品推荐

