回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在这里读过这些帖子,它们准确地解释了我面临的问题,但没有一个解决方案是有效的:</p>
<p><a href="https://stackoverflow.com/questions/29785084/changing-one-list-unexpectedly-changes-another-too">Changing one list unexpectedly changes another, too</a></p>
<p><a href="https://stackoverflow.com/questions/13498453/changing-one-dict-value-changes-all-values">Changing One dict value changes all values</a></p>
<p>我有一个特定形状的2D数组,我需要用它初始化字典中的条目。我是这样做的:</p>
<pre><code>empty = []
for x in range(2):
empty.append([])
for y in range(2):
empty[x].append(False)
status = {k:[] for k in ["a", "b", "c"]}
status["a"] = list(empty)
status["b"] = list(empty)
status["c"] = list(empty)
print(status)
status["a"][0][0] = True
print(status)
</code></pre>
<p>(例如,简化列表的形状)</p>
<p>这张照片是:</p>
<pre><code>{'a': [[False, False], [False, False]], 'b': [[False, False], [False, False]], 'c': [[False, False], [False, False]]}
{'a': [[True, False], [False, False]], 'b': [[True, False], [False, False]], 'c': [[True, False], [False, False]]}
</code></pre>
<p>如您所见,设置一个列表值会更改所有列表。我不希望这样,我希望它们是具有不同值的单独列表(在一个字典中)</p>
<p>起初,我认为我犯了老的<code>newlist = oldlist</code>错误,将newlist设置为与oldlist相同的对象,但没有。正如您在我的代码中所看到的,我使用<code>newlist = list(oldlist)</code>创建单独的列表。我也试过<code>newlist = oldlist[:]</code>、<code>newlist = oldlist.copy()</code>等等</p>
<p>我错过了什么</p>