【发布时间】:2021-08-20 19:50:28
【问题描述】:
我正在使用 Python 3.8.5
我已经创建了一些这样的对象:
class TestClass:
def __init__(self, key, value):
self.key=key
self.value=value
test1 = TestClass(1, 'a')
test2 = TestClass(2, 'b')
test3 = TestClass(3, 'c')
test_list = [test1, test2, test3]
我想创建一个字典来跟踪这些对象的修改:
object_mapper = {
'ClassNotRelevant': None,
'TestClass': None,
'ClassNotRelevant2': None,
}
test_dict = {test.key: object_mapper for test in test_list}
#output
{1: {'ClassNotRelevant': None, 'TestClass': None, 'ClassNotRelevant2': None},
2: {'ClassNotRelevant': None, 'TestClass': None, 'ClassNotRelevant2': None},
3: {'ClassNotRelevant': None, 'TestClass': None, 'ClassNotRelevant2': None}}
现在,我想为字典中的每个类设置 value 属性,如下所示:
#expected dictionary
#output
{1: {'ClassNotRelevant': None, 'TestClass': 'a', 'ClassNotRelevant2': None},
2: {'ClassNotRelevant': None, 'TestClass':'b', 'ClassNotRelevant2': None},
3: {'ClassNotRelevant': None, 'TestClass':'c', 'ClassNotRelevant2': None}}
我正在尝试执行以下操作:
for test in test_list:
test_dict[test.key]['TestClass']= test.value
但输出是:
{1: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None},
2: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None},
3: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None}}
我尝试了不同的解决方案:Updating nested dictionaries when data has existing key
但是一切正常,我做错了什么?
【问题讨论】:
-
您只创建了一个
object_mapper字典,用于test_dict中的所有条目。您需要每个条目都有自己的字典副本。test_dict = {test.key: object_mapper.copy() for test in test_list}也是如此。这将为每个条目执行object_mapper的浅拷贝。
标签: python dictionary