如何在python中的字典中向列表中添加元素?

问题描述 投票:0回答:2
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添加一个新子项。

python
2个回答
1
投票

怎么样的:

my_tree[parentname].append(child)

?

但是你的字典结构很奇怪。 SmithConnor的父母还是Connor父母的父母?

也许是这样的:

{
    "Luke": {"parents": ["Anakin", "Padme"], "children" : []},
    "Leia": {"parents": ["Anakin", "Padme"], "children" : ["Ben"]}
}

会更有意义吗?


-1
投票

那么你的字典结构很奇怪..但附加到字典中的列表并不比直接附加到列表更奇怪..

myDict = {"Sue": ["Connor"]}
myDict["Sue"].append("Barbara")

print(myDict)

>>> {"Sue": ["Connor", "Barbara"]}
© www.soinside.com 2019 - 2024. All rights reserved.