Python字典Lis

2024-09-30 08:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

最初我的程序是这样的:

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

这很好,我可以把东西解析成字典,我想动态地创建列表。在

所以

^{pr2}$

当我运行这个

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

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


Tags: textinnodeforiftagcounterrange
2条回答

在您的例子中,dicList是一个类属性,其中需要一个实例属性。在

类属性只有一个对象可引用(这正是您获得这些结果的原因),而实例属性是在实例化时创建的,因此每个实例引用它们自己的dicList。在

所以您需要使用实例属性,在这种情况下,可以通过在构造函数中创建所述属性来实现。在

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

dicList是一个类属性。在

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

相关问题 更多 >

    热门问题