Python字典列表

Python字典列表,python,dictionary,Python,Dictionary,最初我的程序是这样的: inst = {} class IContainer: dicList = {} for i in range(10): inst[i] = IContainer() def FindEnd(node): if node.text != None: inst[counter].dicList[node.tag] = node.text else: for subNode in node:

最初我的程序是这样的:

inst = {}
class IContainer:
    dicList = {}


for i in range(10):
        inst[i] = IContainer()

def FindEnd(node):
    if node.text != None:
        inst[counter].dicList[node.tag] = node.text
    else:
        for subNode in node:
            FindEnd(subNode)

counter = 0
for element in root:
    if element.tag == "Items":
        for subE in element:
            if subE.tag == "Item":
                for subSubE in subE:
                    FindEnd(subSubE, counter)
                counter += 1
这很好,我能够将内容解析到字典中,我想动态创建列表

所以

当我运行这个

for i in range(len(inst)):
    print inst[i]
    print inst[i].dicList 

所有inst都被最后一个循环的地址和数据替换了……我不知道出了什么问题。

dicList
是类属性

class IContainer:
    def __init__(self):
        self.dicList = {}
class IContainer:
    def __init__(self):
        self.dicList = {}

在您的例子中,
dicList
是一个类属性,您希望在其中有一个实例属性

class IContainer:
    def __init__(self):
        self.dicList = {}
class IContainer:
    def __init__(self):
        self.dicList = {}
类属性只有一个要引用的对象(这正是您获得这些结果的原因),而实例属性是在实例化时创建的,因此每个实例都引用它们自己的
dicList

因此,您希望使用实例属性,您可以通过在构造函数中创建所述属性来实现