0

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

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

可以使用三元运算符解决它还是有另一种方法可以使它成为一条线

4

1 回答 1

2

作为参考,这里是一个班轮。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}
于 2020-09-27T23:13:02.210 回答