字典 dictionary
新华字典 啊 a
概述:使用键-值(key-value)方式存储。
'''
key的特点:
1、字典中的key必须是唯一的
2、key值必须是不可变的数据类型:字符串、元组、Number
3、list是可变的,不能作为key值使用
value:可以是任意类型的数据,可以重复。
字典的本质:一种无序的集合。
'''
思考:保存多位学生的姓名,性别,年龄,成绩
保存多位学生的姓名及成绩
lily 98 tom 67 lucy 98 hmm 45 lilei 45
使用字典:姓名:key 成绩:value
一、创建字典
格式: {key1:value1, key2:value2.....keyn:valuen}
lily 98 tom 67 lucy 98 hmm 45 lilei 45
# 1、创建一个带有5个元素的字典
dic1 = {"Lily":98, "Tom":67, "Lucy":98, "Hmm":45, "Lilei":45}
print(dic1)
print(type(dic1)) # dict
# 2、创建一个空字典
dic2 = {}
print(dic2)
# 3、创建一个只有一个元素的字典
dic3 = {"a" : "abc"}
print(dic3)
# 4、验证key的规则
# 4.1、验证字符串是否可以作为key
dic4 = {"abc":1}
print(dic4)
# 4.2、验证Number是否可以作为key
dic5 = {1:"a"}
print(dic5)
# 4.3、验证Tuple是否可以作为key
dic6 = {(1,1):"abc"}
print(dic6)
# 4.4、验证List是否可以作为key 不允许
# dic7 = {[1,2]:"abc"} # TypeError: unhashable type: 'list'
# print(dic7)
# 4.5、验证key值是否可以重复, 只会保留一次不同的key值
dic8 = {"a":1,"b":2, "a":3}
print(dic8)
二、字典的访问
# 1、获取某一个元素方式1:字典名[key]
dic9 = {"tom":88, "ll":66, "hmm":77}
print(dic9["ll"])
# print(dic9["HH"]) # KeyError: 'HH' 当前key不存在
# 2、获取某一个元素方式2:字典名.get(key)
print(dic9.get("hmm"))
# get获取字典中的值,如果当前key值不存在,返回None
print(dic9.get("HH")) # None
if dic9.get("AA") == None:
print("当前未保存姓名")
else:
print(dic9.get("AA"))
三、字典的操作
dic10 = {"Tom": 98, "Lily":89, "Lucy": 66}
print(dic10)
# 1、增 格式: 字典名[新的key]=value
dic10["Lilei"] = 100
print(dic10)
# 2、删 : 将key值移除,对应的value会自动移除 pop
dic10.pop("Tom")
print(dic10)
# 3、改
dic10["Lily"] = 200
print(dic10)
# 4、查
print(dic10["Lily"])
四、遍历字典
dic11 = {"Tom": 98, "Lily":89, "Lucy": 66}
# 1、遍历字典
for key in dic11:
print(key, dic11[key])
# 2、字典名.keys():返回一个包含所有key的列表
print(dic11.keys())
for key in dic11.keys():
print(key)
# 3、字典名.values():返回一个包含所有value的列表
print(dic11.values())
for v in dic11.values():
print(v)
# 4、字典名.items():返回一个包含所有key-value的元组的列表
print(dic11.items()) # [('Tom', 98), ('Lily', 89), ('Lucy', 66)]
for key in dic11.items():
print(key)
# 字典元素的获取:可以直接遍历items,分别获取key及value
for key,value in dic11.items():
print(key, value)
dict与list相比:
dict:1、查找及插入速度块,不会随着key及value的增加而变慢
2、需要占用的内存大,内存浪费多
list:1、查找及插入速度会随着数据的增加而变慢
2、需要占用的内存小,内存浪费少
题目:
数出字符串中出现的单词,及对应单词出现的次数
'''
I have a good friend her name is Li Hua
We are in the same class So it is natural for us
to become partners When we have group work we
will cooperate well One thing that I admire Li Hua
so much is her persistence Sometimes when the task
is too hard to finish and I want to give up but Li
inspires me to hang on and she believes that we will
get over the difficulty Indeed under her leadership
'''
a=[1,11,6,3,8,77,4,5,7]
for i in range(len(a)-1):
for j in range(i+1,len(a)):
if a[i]<a[j]:
a[i],a[j]=a[i],a[j]
else:
a[i],a[j]=a[j],a[i]
print(a)