Python 嵌套字典理解的执行顺序

Python 嵌套字典理解的执行顺序,python,list,dictionary,dictionary-comprehension,Python,List,Dictionary,Dictionary Comprehension,我正在尝试转换此列表: 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}]
本词典:

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

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

我认为您需要交换围绕do
d={k:v for uu.in data for k,v in uu.items()}
的for语句。