在学习python的过程中,我遇到了一行代码,它可以计算出字母的数字。
dummy='lorem ipsum dolor emet...'
letternum={}
for each_letter in dummy:
letternum[each_letter.lower()]=letternum.get(each_letter,0)+1
print(letternum)现在,我的问题是-in --letternum.get(each_letter,0)+1中的第4行代码--为什么有,0)+1,为什么使用它。请描述一下。
发布于 2020-04-10 13:23:27
字典上的get方法记录在这里:https://docs.python.org/3/library/stdtypes.html#dict.get
get(键,默认)
如果键在字典中,则返回键的值,否则为默认值。如果未给出默认值,则默认为None,因此此方法不会引发KeyError。
所以这解释了0 --当letternum不包含给定的字母时,使用它是一个默认值。
所以我们有letternum.get(each_letter, 0) -这个表达式为当前考虑的字母查找存储在letternum字典中的值。如果没有存储值,则计算值为0。
然后,我们在这个数字中添加一个:letternum.get(each_letter, 0) + 1
最后,我们将其存储回letternum字典,尽管这次将字母转换为小写:letternum[each_letter.lower()] = letternum.get(each_letter, 0) + 1,这似乎是一个错误。我们可能希望更新刚才查找的相同项,但是如果each_letter是大写的,则不是这样的。
发布于 2020-04-10 13:23:04
letternum是dict (字典)。它有一个名为get的方法,它返回与给定键关联的值。如果字典中没有键,则返回一个默认值,即None,除非存在一个可选的第二个参数,在这种情况下,将返回缺少元素的参数值。
在本例中,如果字典中有letternum.get(each_letter,0),则letternum[each_letter]返回each_letter。否则,它将返回0。然后,代码将1添加到此值,并将结果存储在letternum[each_letter.lower()]中。
这会创建每个字母出现的次数的计数,只是在更新时不一致地将字母转换为小写,而不是在检索现有值时,因此大写字母不能正常工作。
发布于 2020-04-10 13:19:25
根据https://www.tutorialspoint.com/python/dictionary_get.htm中的docs,字典get方法的第二个参数是一个可选参数,它指定在字典中没有键时输出的默认值。例如:
letternum = {'keyone':1,'keytwo':2}
print(letternum.get('keythree',3))
print(letternum.get('keyone',3))会输出3然后1,因为字典中不存在key3,所以它在第一个print语句中输出3,然后在第二个print语句中输出1,因为键存在。
https://stackoverflow.com/questions/61141025
复制相似问题