python三元运算符与赋值

geo*_*org 2 python

我是python的新手.我想写这个

if x not in d:
    d[x] = {}
q = d[x]
Run Code Online (Sandbox Code Playgroud)

使用三元运算符以更紧凑的方式

q = d[x] if x in d else (d[x] = {})
Run Code Online (Sandbox Code Playgroud)

但这会给出语法错误.我错过了什么?

Sve*_*ach 11

Python中的条件运算符仅用于表达式,但赋值是语句.您可以使用

q = d.setdefault(x, {})
Run Code Online (Sandbox Code Playgroud)

在这种情况下获得预期的效果.另见文档dict.setdefault().