擅长:python、mysql、java
<p>您可以看到<code>empty</code>列表的第一个元素在字典中的所有值之间共享:</p>
<pre><code>>>> id(empty[0]) == id(status['a'][0]) == id(status['b'][0]) == id(status['c'][0])
True
</code></pre>
<p>它们都共享相同的内存位置。空列表中的第二项也是如此,<code>id(empty[1]) == id(status['a'][1]) == ...</code></p>
<p>原因是您将<code>empty</code>列表分配给每个值。您可以对这个空的嵌套列表执行深度复制,或者使用列表理解为字典中的每个键生成新的列表。空列表创建的列表理解本身是在字典理解中完成的,以便为所有必需的键生成<code>status</code>变量</p>
<pre><code>empty_rows = 2
empty_cols = 2
keys = ['a', 'b', 'c']
status = {k: [[False] * empty_cols
for _ in range(empty_rows)]
for k in keys}
# Example usage:
status['a'][0][0] = True
>>> status
{'a': [[True, False], [False, False]],
'b': [[False, False], [False, False]],
'c': [[False, False], [False, False]]}
</code></pre>
<p>现在,您可以在不影响其他元素的情况下更改任何元素</p>