gpt4 book ai didi

python - 更新具有不同 id 的所有字典值

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:36 26 4
gpt4 key购买 nike

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

字典的格式如下:{'google_drive': {'services': []}, 'dropbox': {'services': []}, 'test': {'services': [ ]}}

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

# 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

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

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

最佳答案

您可以使用 defaultdict :

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

关于python - 更新具有不同 id 的所有字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60284715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com