为什么在字典理解中禁止字典拆包?
Why is dict unpacking forbidden in dict comprehension?
我一直在研究字典理解,正当我想掌握它的窍门时,我收到错误消息:SyntaxError: dict unpacking cannot be used in dict comprehension
这是我试过的例子:
a = {'a': 1, 'b': 2}
b = {'b': 3, 'c': 4}
{**a, **b} # {'a': 1, 'b': 3, 'c': 4}
{ **c for c in [a, b] } # SyntaxError: dict unpacking cannot be used in dict comprehension
我看到过类似的帖子提供解决这个特定问题的方法(主要是 ),但我从未看到关于为什么会发生这种情况的解释。
我找到了这个 issue40715,但我也找不到答案。
如果有人能阐明这个主题,或者将我重定向到一篇文章或诸如此类的东西,我将不胜感激。
最近偶然发现了这个。我认为主要问题是 **c
是指向存储在迭代器中的内容的指针,它将在您迭代时改变,因此最终将指针重新分配给其他东西会产生失去先前引用的效果.要将不同的对象合并在一起,您需要拥有实际引用这些对象的指针。
我一直在研究字典理解,正当我想掌握它的窍门时,我收到错误消息:SyntaxError: dict unpacking cannot be used in dict comprehension
这是我试过的例子:
a = {'a': 1, 'b': 2}
b = {'b': 3, 'c': 4}
{**a, **b} # {'a': 1, 'b': 3, 'c': 4}
{ **c for c in [a, b] } # SyntaxError: dict unpacking cannot be used in dict comprehension
我看到过类似的帖子提供解决这个特定问题的方法(主要是
我找到了这个 issue40715,但我也找不到答案。
如果有人能阐明这个主题,或者将我重定向到一篇文章或诸如此类的东西,我将不胜感激。
最近偶然发现了这个。我认为主要问题是 **c
是指向存储在迭代器中的内容的指针,它将在您迭代时改变,因此最终将指针重新分配给其他东西会产生失去先前引用的效果.要将不同的对象合并在一起,您需要拥有实际引用这些对象的指针。