【问题标题】:Execution order of nested dictionary comprehension [duplicate]嵌套字典理解的执行顺序[重复]
【发布时间】:2021-05-02 06:09:24
【问题描述】:

我正在尝试转换此列表:

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

【问题讨论】:

  • 我认为你需要交换 for 语句
  • 只要d = {k: v for _ in data for k, v in _.items()}

标签: python list dictionary dictionary-comprehension


【解决方案1】:

您需要切换迭代逻辑。 dictionary(或list)内的默认迭代顺序comprehension从左到右:

>>> 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}

您可以分别使用{}[]() 创建嵌套的字典推导列表推导生成器表达式,其中是我前面提到的从左到右执行顺序的例外。所有这些操作都会创建新对象,并在自己的范围内执行。

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2016-12-25
    • 2019-10-23
    • 1970-01-01
    • 2021-07-24
    • 2017-11-27
    • 1970-01-01
    • 2013-07-28
    • 2011-06-06
    相关资源
    最近更新 更多