嵌套字典理解的执行顺序
Execution order of nested 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
您需要切换迭代逻辑。 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}
您可以使用 [= 11=、[]
和 ()
分别是我之前提到的从左到右执行顺序的例外。所有这些操作都会创建新对象,并在它们自己的范围内执行。
我正在尝试转换此列表:
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
您需要切换迭代逻辑。 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}
您可以使用 [= 11=、[]
和 ()
分别是我之前提到的从左到右执行顺序的例外。所有这些操作都会创建新对象,并在它们自己的范围内执行。