|
|
发表于 2018-4-1 19:23:46
|
显示全部楼层
你这个题吧,考察的是字典和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)
'''
#然后最后建议的是:
'''
你做题的时候发现概念不清楚,自己设想出一个例子,用代码的形式执行一下,看看执行什么结果。只有做题的时候你才会有自己的想法,考虑到用什么例子判断,来清楚一个概念。把考虑的用代码来写出来。学代码学代码就是把自己想的东西写出来,把概念证实了。
'''
|
|