You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:06:04