Python Glossary English

все Python 3astпонятие

ast.Dict

литералы

Узел литерала словаря {k: v}: два параллельных списка keys и values. Распаковка **d попадает туда же — с ключом None.

Синтаксис

ast.Dict(keys, values)

Ключи и значения хранятся порознь, а пару собирают через zip(node.keys, node.values). Элемент {**other} даёт ключ None, а значение — само выражение other, поэтому код, который ждёт в keys только узлы, падает на None с AttributeError. Вызов dict(a=1) — это не Dict, а Call, а генератор {k: v for …} — отдельный узел DictComp.

Примеры

import ast
node = ast.parse("{'a': 1, **extra}", mode='eval').body
print(type(node).__name__, len(node.keys))  # → Dict 2
print(node.keys[0].value, node.keys[1], node.values[1].id)  # → a None extra

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности