簡體   English   中英

如何打印出員工的層次樹

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

給定雇員及其老板的清單作為csv文件,編寫一個函數,該函數將打印出雇員的層次結構樹。

來自CSV文件的樣本輸入

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

格式為姓名,主管,職務,加入年份。

輸出應為

Ian CEO 2007

-Sam Technical lead 2009

--Fred Developer 2010

我不確定,但是我嘗試了如下操作。 請建議對此代碼或您擁有的任何其他解決方案進行更改。

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)

我希望輸出是

Ian CEO 2007

-Sam Technical lead 2009

--Fred Developer 2010

像這樣修復縮進應該可行。 縮進在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

這將從您在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