[英]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.