转换为自定义词典类型

时间:2018-09-24 02:47:39

标签: python dictionary casting

我正在使用一组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一样,而不是创建许多实例。 您能指出这样做的错误/建议的其他方法吗?

谢谢

1 个答案:

答案 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