鱼C论坛

 找回密码
 立即注册
查看: 1195|回复: 4

大家帮我看看这带代码 有一段看不明白。

[复制链接]
发表于 2018-3-31 16:45:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
  2. count = {}
  3. for character in message:
  4.     count.setdefault(character,0)
  5.     count[character] = count[character] + 1

  6. print(count)
复制代码

程序循环迭代message 字符串中的每个字符,计算每个字符出现的次数。setdefault()
方法调用确保了键存在的于count字典中(默认值是0),这样在执行 count[character]=
count[character] + 1 是,就不会抛出KeyError 错误。 为什么 count[character]=
count[character] + 1   这句代码 怎么来的啊 count 无论是字典还是列表 + 1都会报错 为什么
在这段代码不会报错呢 还给字典里的  值 + 1 谁帮我给解释一下啊谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-31 17:01:20 | 显示全部楼层
count[character]就不是字典啦,是字典的值。字典的值是0,加1就是1,以此类推。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 17:20:12 | 显示全部楼层
alltolove 发表于 2018-3-31 17:01
count[character]就不是字典啦,是字典的值。字典的值是0,加1就是1,以此类推。。。

十分感谢,明白了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-1 19:23:46 | 显示全部楼层
guoshuai1987 发表于 2018-3-31 17:20
十分感谢,明白了。

你这个题吧,考察的是字典和setdefault()方法的概念。这个题目意义很大,万全解释了这两个概念。首先你得要会做了这个题。如果会了,你就又进一步理解了字典的用法。

题目运行机制:
for循环每次循环都会得到字符串的一个元素,然后setdefault呢,就把这个元素当做键,然后把值设置为0.这个时候已经把一个元素添加到了count字典里了,这个时候,count字典里有一个元素了,然后再执行字典值的加的操作了,就是把这个(count[character] = count[character] + 1)运行就是加的操作。注意的是setdefault()方法的每个键的默认值是0。如果有两个以上一样的字符,就例如‘t’这个字符,for循环碰到‘t’第一次运行完的时候,字典里的键t是这样的{'t':1},循环第二次碰到t的时候,count字典里已经找到了t键,所以忽略了setdefault的默认值0,所以还是第一次循环时候的t键值,然后再运行count[character] = count[character] + 1,就t键值就变成了2,下面的运行一样道理。

总结字典和setdefault()的用法:
1.字典里不能有多个一样的键,如果有了一样的键,他会选择最后的键值。然后字典里里,用每个键可以操作值,可以相加,可以访问值等操作。

2.setdefault()的用法呢,如果字典里的值自己就有值,setdefault里设置的值是没用的,打印之后韩式会打印原先的值,只有键没有值setdefault才会发挥作用,如果字典一开始是空字典,然后用setdefault加元素,而且不给setdefault设置值,他会输出值为None对象。

例子:



'''
#a的应该输出值是{1:3}
a = {1:4,1:3}
print(a)

'''
#setdefault没有设置值的时候

'''
a = {}
a.setdefault(1)
print(a)
'''
#setdefault设置值的时候
'''
a = {}
a.setdefault(1,2)
print(a)
'''
'''
#字典里的键1原先就有值,是2。然后用setdefault()设置了0值,但是运行之后还是会打印原来的值,不会打印setdefault设置的值。
a = {1:2}
a.setdefault(1,0)
print(a)

'''
#然后最后建议的是:

'''
你做题的时候发现概念不清楚,自己设想出一个例子,用代码的形式执行一下,看看执行什么结果。只有做题的时候你才会有自己的想法,考虑到用什么例子判断,来清楚一个概念。把考虑的用代码来写出来。学代码学代码就是把自己想的东西写出来,把概念证实了。
'''
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-1 19:24:54 | 显示全部楼层
这才叫做学代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-29 00:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表