import itertools
from collections import defaultdict
my_tree={'parent':'Smith', 'children':[{'parent':'Connor', 'children':[{'parent':'Alexis','children':
[{'parent':'Joe', 'children':[{'parent':'Clark','children':[]}]}]},{'parent':'Sue','children':[]}]},
{'parent':'Cooper', 'children':[{'parent':'Max','children':[{'parent':'Luis', 'children':[]},]},
{'parent':'Elvis', 'children':[]},{'parent':'Steven', 'children':[]}]}]}
class Person:
ID = itertools.count()
def __init__(self, name, parent=None, level=0):
self.id = self.__class__.ID.next()
self.parent = parent
self.name = name
self.level = level
self.children = []
def createTree(d, parent=None, level=0):
if d:
member = Person(d['parent'], parent, level)
level = level + 1
member.children = [createTree(child, member, level) for child in d['children']]
return member
t = createTree(my_tree)
def printout(parent, indent=0):
print '\t'*indent, parent.name
for child in parent.children:
printout(child, indent+1)
printout(t)
我想在my_tree字典的列表中添加元素。例如,我想为Sue添加一个新子项。
怎么样的:
my_tree[parentname].append(child)
?
但是你的字典结构很奇怪。 Smith
是Connor
的父母还是Connor
父母的父母?
也许是这样的:
{
"Luke": {"parents": ["Anakin", "Padme"], "children" : []},
"Leia": {"parents": ["Anakin", "Padme"], "children" : ["Ben"]}
}
会更有意义吗?
那么你的字典结构很奇怪..但附加到字典中的列表并不比直接附加到列表更奇怪..
myDict = {"Sue": ["Connor"]}
myDict["Sue"].append("Barbara")
print(myDict)
>>> {"Sue": ["Connor", "Barbara"]}