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

时间:2014-01-22 08:36:26

标签: python python-2.7 dictionary conditional-operator

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

c="d"
d={}
d[c]+=1 if c in d else d[c]=1

它给出了:

d[c]+=1 if c in d else d[c]=1
                           ^
SyntaxError: invalid syntax

我没有看到任何错误,因为在没有三元运算符的情况下也是如此:

c="d"
d={}
if c in d:
    d[c]+=1
else:
    d[c]=1

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:3)

写这个的正确方法是:

d[c] = (d[c] + 1) if c in d else 1