if-else 一行中的“SyntaxError”
`SyntaxError` in if-else one-liner
我写了这段代码,但是因为SyntaxError
.
所以它不起作用
def char_freq(message):
d = dict()
for ch in message:
d[ch] += 1 if ch in d else d[ch] = 1
return d ^ SyntaxError: End of statement expected
我不知道如何重写表达式以使 if-else 保持在一行中并使其正常工作。
我知道可以将函数实现为一个简单的 for
循环,但我不明白,为什么我的 if-else 一行会导致 SyntaxError
?
如您所愿if/else
做
d[ch] = (d[ch] + 1) if ch in d else 1
但是 dict.get()
语法更好 d[ch] = d.get(ch, 0) + 1
或 collections.defaultdict
与 int
工厂
def char_freq(message):
d = defaultdict(int)
for ch in message:
d[ch] += 1
return d
把d
变成defaultdict然后你就可以完全忽略这个语句
from collections import defaultdict
def char_freq(message):
d = defaultdict(int)
for ch in message:
d[ch] += 1
return d
看起来你只是在计算字符数,所以你可以使用 counter
from collections import Counter
def char_freq(message):
return Counter(message)
我写了这段代码,但是因为SyntaxError
.
def char_freq(message):
d = dict()
for ch in message:
d[ch] += 1 if ch in d else d[ch] = 1
return d ^ SyntaxError: End of statement expected
我不知道如何重写表达式以使 if-else 保持在一行中并使其正常工作。
我知道可以将函数实现为一个简单的 for
循环,但我不明白,为什么我的 if-else 一行会导致 SyntaxError
?
如您所愿if/else
做
d[ch] = (d[ch] + 1) if ch in d else 1
但是 dict.get()
语法更好 d[ch] = d.get(ch, 0) + 1
或 collections.defaultdict
与 int
工厂
def char_freq(message):
d = defaultdict(int)
for ch in message:
d[ch] += 1
return d
把d
变成defaultdict然后你就可以完全忽略这个语句
from collections import defaultdict
def char_freq(message):
d = defaultdict(int)
for ch in message:
d[ch] += 1
return d
看起来你只是在计算字符数,所以你可以使用 counter
from collections import Counter
def char_freq(message):
return Counter(message)