嵌套字典理解的执行顺序

我正在尝试转换此列表:

data = [{'A': 123}, {'B': 456}, {'C': 789}]

到这本词典:

{'A': 123, 'B': 456, 'C': 789}

通过使用字典理解:

{key: value for key, value in dictionary.items() for dictionary in data}

例外:

NameError: name 'dictionary' is not defined

回答

您需要切换迭代逻辑。字典(或列表理解中的默认迭代顺序从左到右:

>>> data = [{'A': 123}, {'B': 456}, {'C': 789}]

>>> {k: v for d in data for k, v in d.items()}
{'A': 123, 'B': 456, 'C': 789}

您可以创建嵌套的字典解析列表推导或者生成器表达式使用{}[]并且()其分别是左到我前面提到的正确执行顺序的异常。所有这些操作都会创建新对象,并在它们自己的作用域内执行。


以上是嵌套字典理解的执行顺序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>