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
因此,您希望使用实例属性,您可以通过在构造函数中创建所述属性来实现