代码python单词try/exep的频率

2024-09-26 17:37:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我不理解python中的以下代码:

def frequency(text):
if text == "":
    return ""

cuvinte = text.split(" ")
frecv = {}

for cuv in cuvinte:
    try:
        frecv[cuv] += 1
    except:
        frecv[cuv] = 1

print (frecv)

例如,如果我运行:

frequency('zero one two three one four two one five')

它将向我们展示:

{'four': 1, 'three': 1, 'two': 2, 'one': 3, 'five': 1, 'zero': 1}

但为什么呢?你怎么了

 try:
        frecv[cuv] += 1
 except:
        frecv[cuv] = 1  ?

Tags: 代码textdefonethreefourtryfrequency
3条回答

try..except..exception handling mechanism in Python。你知道吗

这个块意味着,当freecv[cuv] += 1失败时(在这种情况下,当freecv中没有任何cuv),它运行freecv[cuv] = 1。简单地说,它首先尝试增加单词的计数,当它失败(因为该单词还没有添加)时,它使用1。你知道吗

顺便说一下,这些代码可以编写得简单得多:

>>> from collections import Counter
>>> def frequency(text):
...     return Counter(text.split(" "))
...
>>> frequency('zero one two three one four two one five')
Counter({'one': 3, 'two': 2, 'three': 1, 'four': 1, 'zero': 1, 'five': 1})

这将处理KeyError异常。frecv[cuv] += 1等价于frecv[cuv] = frecv[cuv] + 1,这意味着cuv键必须存在于字典中。因此,代码可以理解为“如果cuv有一个值,则将其加1;否则将其设置为1”。你知道吗

一个更优雅的写作方式是

try:
    frecv[cuv] += 1
except KeyError:
    frecv[cuv] = 1

当您执行frecv[cuv] += 1时,实际上是在检索frecv[cuv]的当前值,将1添加到该值,然后将其分配给frecv[cuv]。当frecv[cuv]还没有任何值时,就无法检索它,因此会发生异常(KeyError)。你知道吗

相关问题 更多 >

    热门问题