字典上的Python三元运算符失败

sam*_*sam 3 python

原始代码:对于字典d1,如果d1[w]不存在,则将其初始化为1.否则增加它.

if d1.get(w) == None:
    d1[w] = 1
else:
    d1[w] += 1
Run Code Online (Sandbox Code Playgroud)

但是,使用三元运算符会导致失败.

d1[w] = 1 if d1.get(w) == None else d1[w] += 1
                                           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

这是什么问题?

Moh*_*uag 6

更改

d1[w] = 1 if d1.get(w) == None else d1[w] += 1
Run Code Online (Sandbox Code Playgroud)

d1[w] = 1 if d1.get(w) == None else d1[w] + 1 # '+' instead of '+='
Run Code Online (Sandbox Code Playgroud)

或者,正如@vaultah在他的评论中所建议的那样:

d1[w] = d1.get(w, 0) + 1
Run Code Online (Sandbox Code Playgroud)

  • 或者`d1 [w] = d1.get(w,0)+ 1`. (3认同)