все Python 3astпонятие
ast.DictComp
выражения
Узел словарного включения {k: v for …}: выражения ключа и значения в key и value и список циклов generators.
Синтаксис
ast.DictComp(key, value, generators)
Каждое for в включении — отдельный элемент generators (узел comprehension с target, iter, ifs и is_async), а условия if лежат списком в ifs своего цикла. Порядок generators совпадает с порядком for в исходнике, то есть первый элемент — внешний цикл. Обычный литерал {k: v} — это Dict, а не DictComp.
Примеры
import ast
node = ast.parse('{k: v for k, v in items if v}', mode='eval').body
print(node.key.id, node.value.id, len(node.generators)) # → k v 1
gen = node.generators[0]
print(type(gen.target).__name__, gen.iter.id, len(gen.ifs)) # → Tuple items 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности