Python三元运算符和else中的赋值

Edu*_*scu 2 python dictionary conditional-operator python-2.7

三元运算符非常有用,为什么它在这种特殊情况下不起作用:

c="d"
d={}
d[c]+=1 if c in d else d[c]=1
Run Code Online (Sandbox Code Playgroud)

它给:

d[c]+=1 if c in d else d[c]=1
                           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误,因为没有三元运算符的同样的事情:

c="d"
d={}
if c in d:
    d[c]+=1
else:
    d[c]=1
Run Code Online (Sandbox Code Playgroud)

use*_*ica 11

三元运算符处理表达式而不是语句.作业是一种陈述.使用常规if/ else.

  • 或者使用`defaultdict`和`d [c] + = 1`.或者也许`d [c] = d.get(c,0)+ 1`. (3认同)
  • @Blender:不要使用`defaultdict(int)`来模拟`Counter`.只要你想要一个`Counter`. (2认同)