为什么这个关于字典的 Python 片段有效?

asd*_*van 14 python dictionary

说我们有这个

>>> x = {'a': 1, 'b': 2}
>>> y = {}
>>> for k, y[k] in x.items(): pass
...
>>> y
{'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

为什么这有效?

注意:我第一次在这里看到这个

Pra*_*adi 7

a, b = (c, d)从左到右解压元组并按该顺序分配a = c和。b = d

x.items()迭代 中的键值对x。例如,做list(x.items())会给[('a', 1), ('b', 2)]

for a, b in x.items()将中的每个键值对的键分配给a,并将值分配给。bx

for k, y[k] in x.items()将中的每个键值对的键分配给k,并将值分配给。y[k]x

您可以使用kiny[k]因为k已经分配了解包发生在左右两侧

您不需要在循环中执行任何操作,因为您需要的任何操作都已完成。

因为循环已经将每个值分配给xto y[k]y现在是 的浅表副本x

正如您引用的推文所说,这确实是一种“简洁、不直观且令人困惑”的方法x.copy()