使用不同的 ID 更新所有字典值

我想设计一个自动生成的词典模板。


字典的格式是这样的:{'google_drive': {'services': []}, 'dropbox': {'services': []}, 'test': {'services': []}}


所有键具有相同的值,并且其值 ID/地址应不同。现在的问题是所有值都是相同的。{'services': []}


# init function has an array ["google_drive", "dropbox", "test"] 

# so that all the key-value pairs can be created automatically

test = CloudInfo().init().config_info

print(id(test["google_drive"]["services"]))

print(id(test["dropbox"]["services"]))

print(id(test["test"]["services"]))

输出


2382756081216

2382756081216

2382756081216

我在封装的方法中发现了问题:


def update_all_value(self, keys, value):

    __keys = keys

    __dict = self.__dict

    __value = value

    if __keys is not None:

        for key in __keys:

            if key in __dict:

                __dict.update({key: __value})

        self.__dict = __dict

    return self

所有键都指向单个变量 。__value


如果我更改为 ,字典值是不同的 id。但该函数不可重用。__dict.update({key: __value})__dict.update({key: {'services': []}})


有没有好的解决方案可以更新具有不同ID的所有字典值并保持输入参数的工作?value


墨色风雨
浏览 75回答 1
1回答

不负相思意

您可以使用默认命令:from collections import defaultdictimport copytemplate = {'services': []}test = defaultdict(lambda: copy.deepcopy(template))print(id(test["google_drive"]["services"]))# 2546846465416print(id(test["dropbox"]["services"]))# 2546847840648print(id(test["test"]["services"]))# 2545171504392
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python