【发布时间】:2014-02-12 05:07:57
【问题描述】:
三元运算符非常有用,为什么它在这种特殊情况下不起作用:
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
【问题讨论】:
-
对于这种情况,使用默认字典。
from collections import defaultdict; d = defaultdict(int); d[c] += 1. -
@RemcoGerlich:当你可以只使用
Counter时,为什么要模拟Counter和defaultdict? -
@abarnert:习惯的力量?我总是首先记住
defaultdict,因为它出现在Counter之前,而且更通用。 -
@abarnert:谢谢,我总是忘记 Counter 有多酷
-
我们至少可以称它为 conditional expression。它是 a 三元运算符,但 SQL
BETWEEN ... AND ...表达式也是如此。
标签: python python-2.7 dictionary conditional-operator