题目:
有"The payment will be made in the following month after the shipment"一个字符串,问:
这串字符串中每个字符出现的次数是多少次?(要求返回结果是字典)
思路
- 首先我们要来确定一下字典的概念:键必须独一无二,所以我们不用担心我们判断的值是否会重复
- 我们要先将这段字符串中的字符循环添加到字符串中,然后判断字典中是否有这么一个键,如果有就将他的值加1,如果没有就给这个键的值为1
#这个是一个新的字符串
s = "The payment will be made in the following month after the shipment"
#创建一个新的字典
d = {}
#将字符串中的字符进行遍历
for i in s:
#得到了想要的字符
print(i)
#将字符放入到字典中
if i in d:
#这段代码的含义就是如果d[i]这个键对应的值是在我们的字典当中的话,那么d[i]对应的值就加1
d[i] = d[i]+1
else:
#否则就将d[i]这个键加入到字典中并给值为1
d[i] = 1
print(d)
除了这一种写法之外,还有另一种写法较为便捷,虽然我现在也不是特别清楚是什么原理,但是代码我是可以读懂的
#这个是一个新的字符串
s = "The payment will be made in the following month after the shipment"
#创建一个新的字典
c = {}
#将字符串中的字符进行遍历
for i in s:
#这段代码的意思就是c[键]中的值如果在c中,那么就将键中的值加1,否则就=1
c[i] = (c[i]+1) if (i in c) else 1
print(c)
还有一种方法是运用到我下面讲的字典的fromkeys()的方法
##第三种方法
s = "The payment will be made in the following month after the shipment"
#先将字符串转化成列表
l = list(s)
#再用我下面的方法将列表生成字典,并将每个键赋值为0
d = dict.fromkeys(l,0)
for i in l:
#循环判断如果d.get(i)获得了这个键的值大于或者等于0的话就进去将值加1
if d.get(i)>=0:
d[i] = d[i]+1
print(d)
有知道第二种方法的实现原理的可以评论告诉我,献丑了!!
字典知识回顾
- 字典的创建
#创建字典字典
d = {}
d = dict()
-
字典的特征
1> 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。
2> 字典是序列类型,但是是无序序列所以没有索引和分片 -
字典的迭代
#只取k的值
d = dict({"a":1,"b":2,"c":3})
for k in d.keys():
print(k)
#只取v的值
for v in d.values():
print(v)
#取k,v值
for k,v in d.items():
print(k,"---",v)
-
字典中的方法
通用函数:len(),max(),min(),dict()
str(字 典):返回字典字符串格式
clear:清空字典
items():返回字典键值对组成的结构
keys():返回字典中键组成的一个结构
values():返回字典中值组成的一个结构
get():根据指定键获取值(如果该键没有不会报错),可以设置默认值
formkeys(序列,值):使用序列作为键,使一个值成为字典的所有值
示例:
l = ["a","b","c"]
d.dict.fromkeys(l,100)