带字典的三元运算符 [python]
Ternary Operator with a dictionary [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}
我想将下面的代码优化为一行
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}