我正在使用一组Json对象来创建类似这样的字典。
t = [{"A":100}, {"B":200}, {"C":300}]
现在,我希望它们以更大的方式投放,使未指定的项目应采用默认值。
default = {
"A" : 10,
"B" : 20,
"C" : 30
}
到目前为止,我尝试过使用如下的类
class MyClass:
default = {
"A" : 10,
"B" : 20,
"C" : 30
}
def __init__(self, input):
self.default.update(input)
def get(self):
return self.default
但是当我尝试创建这样的词典列表时,它给出了错误的答案。
a = [MyClass(x).get() for x in t]
[{'A': 100, 'C': 300, 'B': 200}, {'A': 100, 'C': 300, 'B': 200}, {'A': 100, 'C': 300, 'B': 200}]
在我看来,就像仅生成一个类实例并在其上调用init一样,而不是创建许多实例。 您能指出这样做的错误/建议的其他方法吗?
谢谢
答案 0 :(得分:1)
在我看来就像只生成了一个类实例
因为这正是发生的情况。 MyClass
的所有实例对同一词典的引用均相同。您应该在构造函数中实例化一个新字典:
class MyClass:
def __init__(self, input):
self.default = {
"A" : 10,
"B" : 20,
"C" : 30
}
self.default.update(input)
def get(self):
return self.default