具有字典的三元运算符[python]

问题描述

我想将下面的代码优化为一行

if i == 0:
    d = {}
else:
    d[j] = d.get(j,0) + 1

我尝试使用三元运算符解决它,但它给了我一个错误

d = {} if i == 0 else d[j] = d.get(j,0) + 1

错误

d = {} if i == 0 else d[j] = d.get(j,0) + 1
        ^
SyntaxError: cannot assign to conditional expression

可以使用三元运算符解决它,还是有另一种方法可以使它在一行中实现?

解决方法

作为参考,这是一个衬板。我不会称之为改进,因为您原来的if / else方法更具可读性:

d = {} if i == 0 else {**d,j: d.get(j,0) + 1}

从Python 3.9开始,您可以执行以下操作:

d = {} if i == 0 else d | {j: d.get(j,0) + 1}