首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不要理解python中.get()方法的技巧

不要理解python中.get()方法的技巧
EN

Stack Overflow用户
提问于 2020-04-10 13:12:58
回答 6查看 268关注 0票数 0

在学习python的过程中,我遇到了一行代码,它可以计算出字母的数字。

代码语言:javascript
复制
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,为什么使用它。请描述一下。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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是大写的,则不是这样的。

票数 1
EN

Stack Overflow用户

发布于 2020-04-10 13:23:04

letternumdict (字典)。它有一个名为get的方法,它返回与给定键关联的值。如果字典中没有键,则返回一个默认值,即None,除非存在一个可选的第二个参数,在这种情况下,将返回缺少元素的参数值。

在本例中,如果字典中有letternum.get(each_letter,0),则letternum[each_letter]返回each_letter。否则,它将返回0。然后,代码将1添加到此值,并将结果存储在letternum[each_letter.lower()]中。

这会创建每个字母出现的次数的计数,只是在更新时不一致地将字母转换为小写,而不是在检索现有值时,因此大写字母不能正常工作。

票数 2
EN

Stack Overflow用户

发布于 2020-04-10 13:19:25

根据https://www.tutorialspoint.com/python/dictionary_get.htm中的docs,字典get方法的第二个参数是一个可选参数,它指定在字典中没有键时输出的默认值。例如:

代码语言:javascript
复制
letternum = {'keyone':1,'keytwo':2}
print(letternum.get('keythree',3))
print(letternum.get('keyone',3))

会输出3然后1,因为字典中不存在key3,所以它在第一个print语句中输出3,然后在第二个print语句中输出1,因为键存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61141025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档