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
相关产品推荐
相关产品推荐

