字典:
使用键值(key-value)存储,具有极快的查找速度。
注意:字典是无序的
key的特性:
- 字典中的key必须唯一
- key必须是不可变对象
- 字符串,整数等都是不可变的,可以作为key
- list是可变的,不能作为key
思考:保存多为写生的姓名与成绩
(使用字典,学生姓名为key,学生成绩为值)
dict1 = {"tom":60, "lilei":70}
- 元素的访问
- 获取:字典名[key]
print(dict1["lilei"])
print(dict1["Jack"]) #没有
print(dict1.get("Jack")) #返回none(常用)
- 元素的添加
dict1["hanmeimei"] = 90 #加入字典
dict1["lilei"] = 80 #覆盖原来的值
#因为一个key对应一个value,所以,多次对一个key赋值,其实就是修改值
- 元素的删除
dict1.pop(“某个key”)
print(dict1.pop("tom"))
遍历
for k, v in dict1.items():
print(k, v)
和list比较:
- 它的查找和插入的速度极快,不会随着key-value的增加而变慢
- 需要占用大量的内存,内存浪费多(多存了key的部分)
list:
- 查找和插入的数据随着数据量的增加而变慢
- 占用内存小
练习:
str = “kk kkkd good kkk good k kk”
用字典的方法找出str中good出现的次数
思路:
- 先以空格切割字符串,
- 循环处理列表中的每个元素,
- 以元素当作key去一个字典中提取数据,
- 如果没有提取到,将以该元素为key,1作为value存进字典
- 如果提取到,将对应的key的value修改,值加1
- 根据输入的字符串当作key再去字典取值
w = input()
d = {} #word:次数
str = "I am a good boy, and hello good world, and a and " #字符串
l = str.split(" ") #字符串分为元组
for v in l:
c = d.get(v) #在d中找v
if c == None: #如果v不在d中,则d中v出现的次数为1
d[v] = 1
else: #如果v在d中,则v的次数加加
d[v] +=1
print(d[w])