简体   繁体   English

如何打印出员工的层次树

[英]How to print out a hierarchy tree of the employees

Given a list of employees and their bosses as a csv file , write a function that will print out a hierarchy tree of the employees. 给定雇员及其老板的清单作为csv文件,编写一个函数,该函数将打印出雇员的层次结构树。

Sample input from csv file 来自CSV文件的样本输入

Sam, Ian, technical lead, 2009 / Ian, NULL, CEO,2007/ Fred, Sam,developer, 2010

The format is name, supervisor, designation, year of joining. 格式为姓名,主管,职务,加入年份。

The output should be 输出应为

Ian CEO 2007

-Sam Technical lead 2009

--Fred Developer 2010

I am not sure but I have tried it as below. 我不确定,但是我尝试了如下操作。 Please suggest changes to this code or any other solutions you have. 请建议对此代码或您拥有的任何其他解决方案进行更改。

strq = "Sam, Ian, technical lead, 2009 / Ian, NULL, CEO,2007/Fred, Sam, developer, 2010"
def treeEmployee(infoStr):
    str1 = infoStr.split("/")
    s2 = []
    for i in str1:
        s2.append(i.split(","))
    for i in range(len(s2)):
        for j in range(1, len(s2)):
            if s2[i][1] == s2[j][0]:
                s2[i], s2[j] = s2[j], s2[i]
            return s2

print treeEmployee(strq)

I want the output to be 我希望输出是

Ian CEO 2007

-Sam Technical lead 2009

--Fred Developer 2010

Fixing the indentation like this should work. 像这样修复缩进应该可行。 Indentation is extremely important in python. 缩进在python中非常重要。

strq = "Sam, Ian, technical lead, 2009 / Ian, NULL, CEO,2007/Fred, Sam, developer, 2010"
def treeEmployee(infoStr):
    str1 = infoStr.split("/")
    s2 = []
    for i in str1:
        s2.append(i.split(","))
    for i in range(len(s2)):
        for j in range(1, len(s2)):
            if s2[i][1] == s2[j][0]:
                s2[i], s2[j] = s2[j], s2[i]
                return s2

This generates a hierarchy tree from your inputs in JS. 这将从您在JS中的输入生成一个层次树。

 function wrapper(str) { var elem; str = str.split('/'); function tree(parent, arr, level) { if (!parent) { parent = 'NULL'; } if (!arr) { arr = []; } if (!level) { level = 0; } var obj, children = findChild(parent); for (var i = 0, len = children.length; i < len; i += 1) { elem = children[i]; obj = { name: elem[0], supervisor: parent, designation: elem[2], yearOfJoining: elem[3], children: [], level: level }; arr.push(obj); console.log(dashGenerator(level) + obj.name + ' ' + obj.designation + ' ' + obj.yearOfJoining); tree(elem[0], obj.children, level + 1); } return arr; } function dashGenerator(level) { var str = ''; for (var i = 0; i < level; i += 1) { str += '-'; } return str; } function findChild(parent) { var child = []; for (var i = 0, len = str.length; i < len; i += 1) { elem = str[i].split(',') if (elem[1].trim() === parent.trim()) { child.push(elem); } } return child; } tree(); } wrapper("Sam, Ian, technical lead, 2009 / Ian, NULL, CEO,2007/ Fred, Sam,developer, 2010"); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM