<p>很少有婚前夫妇</p>
<ul>
<li>Dict键是不可变的,而值是可变的。你知道吗</li>
<li>使用<code>=</code>时,新变量只引用旧列表</li>
</ul>
<p>键<code>c</code>处的值是一个列表。钥匙指向那个地方。复制到变量时,会传递引用。这可以通过使用<code>id</code>来确认。你知道吗</p>
<pre><code>>>> id(ddic['c'])
140726603094424
>>> id(n2)
140726603094424
</code></pre>
<p>如您所见,这两个变量都指向内存中的同一个元素。因此,您在其中所做的任何更改也会反映到原来的更改。你知道吗</p>
<p>要获得列表的浅表副本,可以使用<code>[:]</code><a href="https://stackoverflow.com/questions/29376270/lists-as-values-in-a-dictionary-pyython/29376334?noredirect=1#comment46933296_29376334">as mentioned by Blckknght</a></p>
<pre><code>>>> n2 = ddic['c'][:]
</code></pre>
<p>在python3中,可以使用(如<a href="https://stackoverflow.com/questions/29376270/lists-as-values-in-a-dictionary-pyython/29376334?noredirect=1#comment46933664_29376334">Padraic</a>所述)</p>
<pre><code>>>> n2 = ddic['c'].copy()
</code></pre>
<p>使用<code>copy</code>模块,您可以像中一样防止这种情况发生</p>
<pre><code>>>> import copy
>>> n2 = copy.copy(ddic['c'])
>>> id(ddic['c'])
140726603094424
>>> id(n2)
140726603177640
</code></pre>
<p>参考</p>
<ul>
<li><a href="https://docs.python.org/2/library/functions.html#id" rel="nofollow noreferrer">^{<cd3>}</a></li>
<li><a href="https://docs.python.org/2/library/copy.html" rel="nofollow noreferrer">^{<cd5>}</a></li>
</ul>
<p>还要注意的是,正如注释中的<a href="https://stackoverflow.com/questions/29376270/lists-as-values-in-a-dictionary-pyython/29376334?noredirect=1#comment46933178_29376334">Kasra</a>所提到的,dict没有像数据结构那样的独立空间。您可以在<a href="http://svn.python.org/view/python/trunk/Objects/dictobject.c?view=markup" rel="nofollow noreferrer">this</a>文档中找到引用</p>