Question

Ternary operator is very useful, why it does not work in this particular case:

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

It gives:

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

I don't see nothing wrong here since the same thing without the ternary operator works:

c="d"
d={}
if c in d:
    d[c]+=1
else:
    d[c]=1
Was it helpful?

Solution

The ternary operator works on expressions, not statements. Assignment is a statement. Use a regular if/else.

OTHER TIPS

The correct way to write this would be:

d[c] = (d[c] + 1) if c in d else 1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top