我想设计一个自动生成的词典模板。字典的格式是这样的:{'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 automaticallytest = CloudInfo().init().config_infoprint(id(test["google_drive"]["services"]))print(id(test["dropbox"]["services"]))print(id(test["test"]["services"]))输出238275608121623827560812162382756081216我在封装的方法中发现了问题: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
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
您可以使用默认命令:
from collections import defaultdict
import copy
template = {'services': []}
test = defaultdict(lambda: copy.deepcopy(template))
print(id(test["google_drive"]["services"]))
# 2546846465416
print(id(test["dropbox"]["services"]))
# 2546847840648
print(id(test["test"]["services"]))
# 2545171504392
添加回答
举报
0/150
提交
取消