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

Python员工层级代码输出异常:显示单个字符而非完整员工字符串

员工层级展示字符拆分问题的解决方法

问题根源

你的函数声明返回类型是List[str],但最后却返回了用\n拼接好的字符串output_str。当调用这个函数的代码把返回值当作列表处理时,Python会把字符串当成可迭代对象,将每个字符拆成单独的元素,最终导致逐行显示单个字符。

两种修复方案

方案1:修改返回类型为字符串(适合直接输出场景)

把函数的返回类型注解改成str,保持现有拼接逻辑:

def get_employee_hierarchy(self, manager_name: str) -> str:
    output_tree = []

    def build_hierarchy(employee_name, level=0):
        employee = self._employee_book.get(employee_name)
        if not employee:
            return []

        indent = "\t" * level
        employee_str = f"{indent}Employee [name={employee.get_name()}, gender={employee.get_gender().value}]"
        hierarchy = [employee_str]

        direct_reports = self.get_direct_reports(employee_name)
        for direct_report in direct_reports:
            hierarchy.extend(build_hierarchy(direct_report.get_name(), level + 1))

        return hierarchy

    hierarchy = build_hierarchy(manager_name)
    output_tree.extend(hierarchy)

    # Join the hierarchy items into a single string with newlines
    output_str = '\n'.join(output_tree)

    return output_str

方案2:直接返回列表(适合后续需要对每行单独处理的场景)

去掉字符串拼接步骤,直接返回构建好的层级列表:

def get_employee_hierarchy(self, manager_name: str) -> List[str]:
    def build_hierarchy(employee_name, level=0):
        employee = self._employee_book.get(employee_name)
        if not employee:
            return []

        indent = "\t" * level
        employee_str = f"{indent}Employee [name={employee.get_name()}, gender={employee.get_gender().value}]"
        hierarchy = [employee_str]

        direct_reports = self.get_direct_reports(employee_name)
        for direct_report in direct_reports:
            hierarchy.extend(build_hierarchy(direct_report.get_name(), level + 1))

        return hierarchy

    return build_hierarchy(manager_name)

说明

方案1适合直接把结果打印输出的场景,方案2保留了列表格式,方便后续对每一行员工信息做进一步处理。根据你的调用场景选择即可。

内容的提问来源于stack exchange,提问作者Arnab Chakraborty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:52:27