Python如何将嵌套列表按指定格式输出并支持筛选排序功能
Python游戏角色信息格式化输出实现方案
首先明确从现有代码推导的单条角色数据结构:
每个角色子列表的索引对应字段:
- 索引0:角色名称
- 索引2:角色类型(
'h'代表英雄,'v'代表反派) - 索引3:总场次(P)
- 索引4:胜场(W)
- 索引5:负场(L)
- 索引6:平场(D)
- 索引7:生命值(Health)
实现代码
def display_characters(character_list, display_type=0, sort_by='name'): """ 打印角色信息列表 :param character_list: 原始角色嵌套列表,不会修改该参数内容 :param display_type: 展示类型,0=全部,1=仅英雄,2=仅反派 :param sort_by: 排序维度,可选值: 'name'(名称,默认), 'health'(生命值), 'win'(胜场数), 'play'(总场次) """ # 筛选符合条件的角色,生成新列表不修改原数据 filtered = [] for char in character_list: if display_type == 0: filtered.append(char) elif display_type == 1 and char[2] == 'h': filtered.append(char) elif display_type == 2 and char[2] == 'v': filtered.append(char) # 排序逻辑,生成新的排序后列表不修改原数据 sort_key_map = { 'name': lambda x: x[0], 'health': lambda x: int(x[7]), 'win': lambda x: int(x[4]), 'play': lambda x: int(x[3]) } sorted_chars = sorted(filtered, key=sort_key_map.get(sort_by, sort_key_map['name'])) # 打印固定头部 print("===================================================") print("- Character (heroes and villains) Summary -") print("===================================================") print("- P W L D Health -") print("---------------------------------------------------") # 遍历打印所有符合条件的角色,固定宽度对齐保证格式统一 for char in sorted_chars: # 格式说明:角色名左对齐占28位,P/W/L/D各占2位右对齐,生命值占6位右对齐 line = f"- {char[0]:<28} {char[3]:>2} {char[4]:>2} {char[5]:>2} {char[6]:>2} {char[7]:>6} -" print(line) print("---------------------------------------------------") # 打印尾部边框 print("===================================================")
代码说明
- 不修改原数据:全程基于原始列表生成新的筛选、排序后列表,其他模块对
character_list的修改会实时同步到打印结果 - 动态适配:不管角色列表增删多少个元素,都会自动遍历打印,不需要修改代码适配数量
- 格式对齐:用固定宽度的字符串对齐语法,不管角色名长短、数值位数多少,边框都会和示例样式完全一致
- 扩展灵活:需要新增排序维度时,只需在
sort_key_map中新增对应规则即可
使用示例
# 打印全部角色,按生命值从高到低排序 display_characters(character_list, display_type=0, sort_by='health') # 仅打印英雄,按胜场排序 display_characters(character_list, display_type=1, sort_by='win') # 仅打印反派,默认按名称排序 display_characters(character_list, display_type=2)
内容的提问来源于stack exchange,提问作者Jayden
相关产品推荐
相关产品推荐

