kib*_*hft 6 python list python-3.x anytree
社区。我需要接受多个以逗号分隔的输入来生成信息摘要(具体来说,每个小组/项目中有多少不同的员工参与)?该程序以字符串的形式获取员工、经理和团体。
\n我正在使用anytree python 库来搜索/计算每个组中每个员工的出现次数。但是,该程序一次仅接受一个值/单元格,而不是多个值。
这是树结构以及我如何接受输入值?
\nPress q to exit, Enter your data: Joe\nPress q to exit, Enter your data: Manager1\nPress q to exit, Enter your data: Group1\nPress q to exit, Enter your data: Charles \nPress q to exit, Enter your data: Manager1\nPress q to exit, Enter your data: Group2\nPress q to exit, Enter your data: Joe\nPress q to exit, Enter your data: Manager3\nPress q to exit, Enter your data: Group1\nPress q to exit, Enter your data: Charles\nPress q to exit, Enter your data: Manager3\nPress q to exit, Enter your data: Group1\nPress q to exit, Enter your data: Joe\nPress q to exit, Enter your data: Manager5\nPress q to exit, Enter your data: Group2\nPress q to exit, Enter your data: q\nEmployee No of groups\n JOE 2\n CHARLES 2\nGroup\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 GROUP1\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 JOE\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANAGER1\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 JOE\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANAGER3\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CHARLES\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANAGER3\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 GROUP2\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CHARLES\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANAGER1\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 JOE\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANAGER5\nRun Code Online (Sandbox Code Playgroud)\n我需要此代码的帮助,以便它可以接受逗号分隔的值;例如,一次输入Joe、Manager1、Group1 。
\nimport anytree\n\nfrom anytree import Node, RenderTree, LevelOrderIter, LevelOrderGroupIter, PreOrderIter\n\nimport sys\n\n# user input\nio=''\nlst_input = []\nwhile (io!='q'):\n io=input('Press q to exit, Enter your data: ')\n if io!='q':\n lst_input.append(io.upper())\n\n# change list in to matrix\nlst=[]\nfor i in range(0, len(lst_input), 3):\n lst.append(lst_input[i:i + 3])\n\nlst\n\n# create tree structure from lst\ngroup = Node('Group')\nstoreGroup = {}\nfor i in range(len(lst)):\n if lst[i][2] in [x.name for x in group.children]: # parent already exist, append childrens\n storeGroup[lst[i][0]] = Node(lst[i][0], parent=storeGroup[lst[i][2]])\n storeGroup[lst[i][1]] = Node(lst[i][1], parent=storeGroup[lst[i][0]])\n else: # create parent and append childreds\n storeGroup[lst[i][2]] = Node(lst[i][2], parent=group)\n storeGroup[lst[i][0]] = Node(lst[i][0], parent=storeGroup[lst[i][2]])\n storeGroup[lst[i][1]] = Node(lst[i][1], parent=storeGroup[lst[i][0]])\n\n\nstore = {}\nfor children in LevelOrderIter(group, maxlevel=3):\n if children.parent!=None and children.parent.name!='Group':\n if children.name not in store:\n store[children.name] = {children.parent.name}\n else:\n store[children.name] = store[children.name] | {children.parent.name}\n\nprint('Employee', ' No of groups')\nfor i in store:\n print(' '+i+' ', len(store[i]))\n\n\nfor pre,fill, node in RenderTree(group):\n print('{}{}'.format(pre,node.name))\nRun Code Online (Sandbox Code Playgroud)\n
谢谢你!欢迎任何想法。
小智 5
利用拆包来提取元素。那么if语句可以这样重写。
if io!='q':
name, role, grp = io.upper(). split(',')
lst_input.append([name,role, grp])
Run Code Online (Sandbox Code Playgroud)
您还需要lst.append(lst_input[i:i + 3])将 for 循环更改为此。
lst.append(lst_input[0][i:i + 3])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |