python 字典 setdefault 求助

如图,最后一行代码应该怎么解读为什么会得出运行的结果?最初by_letter是空字典,首字母a没有在其中,所以就返回一个[]键,就相当于是[]append(word)是吗... 如图,最后一行代码应该怎么解读为什么会得出运行的结果?最初 by_letter是空字典,首字母a没有在其中,所以就返回一个[]键,就相当于是[]append(word)是吗,append是只有在setdefault返回默认值时才有效吗?有点混乱,求大神指点words = ['apple', 'bat', 'bar', 'atom', 'book']by_letter = {}for word in words: letter = word[0] by_letter.setdefault(letter, []).append(word) 展开
 我来答
microroom
科技发烧友

2019-10-05 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1618万
展开全部
最初,by_letter是空字典,首字母a没有在其中,所以就返回一个[],就相当于是[].append(word),同时将键值对'a':['apple']添加到字典中,第2次再遇到首字母是a的单词时,by_letter.setdefault(letter, [])会返回字典的键为'a'的值['apple'],就相当于['apple'].append(word),此时,键为'a'的值就变成了['apple','atom'],以后遇到首字母为a的单词时,都这样处理。其它首字母的处理与处理a的类似。
匿名用户
2019-10-05
展开全部
dict.setdefault(x,y)
返回字典中与键X对应的值,若不存在则返回y,并将X:Y键值对添加到字典中
d.setdefault(x,[])返回的空list与d['a']中的列表是同一个地址(list是可变对象),对这个空列表进行append()操作就相当于对d['a']所指的列表进行操作,一旦字典中存在了键'a',则返回的是d['a']所对应的列表而不是空列表了,后面的操作就相当于:
d['a'].append(word)
结果:将以同一个字母开头word的放在同一个列表中
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式