回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在使用Python 3.8.5</p>
<p>我创建了一些类似这样的对象:</p>
<pre class="lang-py prettyprint-override"><code>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]
</code></pre>
<p>我想创建一个字典来跟踪此对象中的修改:</p>
<pre class="lang-py prettyprint-override"><code>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}}
</code></pre>
<p>现在,我想为字典中的每个类设置value属性,如下所示:</p>
<pre class="lang-py prettyprint-override"><code>#expected dictionary
#output
{1: {'ClassNotRelevant': None, 'TestClass': 'a', 'ClassNotRelevant2': None},
2: {'ClassNotRelevant': None, 'TestClass':'b', 'ClassNotRelevant2': None},
3: {'ClassNotRelevant': None, 'TestClass':'c', 'ClassNotRelevant2': None}}
</code></pre>
<p>我正在努力做到以下几点:</p>
<pre class="lang-py prettyprint-override"><code>for test in test_list:
test_dict[test.key]['TestClass']= test.value
</code></pre>
<p>但结果是:</p>
<pre class="lang-py prettyprint-override"><code>{1: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None},
2: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None},
3: {'ClassNotRelevant': None, 'TestClass': 'c', 'ClassNotRelevant2': None}}
</code></pre>
<p>我尝试了以下不同的解决方案:<a href="https://stackoverflow.com/questions/27118687/updating-nested-dictionaries-when-data-has-existing-key/27118776">Updating nested dictionaries when data has existing key</a></p>
<p>但一切都成功了,我做错了什么</p>