Python12_字典

概述

使用键-值(key-value)存储,具有极快的查找速度

key的特征:

  1. key必须唯一
  2. key必须是不可变的对象(字符串、整数等是不可变的,可以作为key,list是可变的,不可作为key,通常使用字符串)
  3. 字典是无序的(在大多数语言中,字典都是无序的)

思考:保存多为学生的姓名与成绩

如果用list
`[[“Tome”,93],[“Jack”,45]]

使用字典:学生姓名作为key,成绩作为值

dict1 = {"Tome":60,"lilei":70}

ps:字典可以只有key而没有value

元素的访问

获取

格式:字典名[key],以访问相应key对应的value。如果没有该key,则报错

print(dict1["lilei"])   #输出70
  • get(key,defaultValue)

当我们不确定字典中是否存在某个key,而且还要获得其value,可以使用get()

常用

如果没有该key,不报错,返回None

print(dict1.get("sunck"))
print(dict1.get("sunck","1234"))	#如果不存在sunck键,则返回1234,否则返回sunck的value

添加

dict1["hanmeimei"] = 99

更新

因为一个key对应一个value,所以,多次对一个key的value赋值,则为修改值

dict1["lilei"] = 89

删除

pop(key)

列表中也有pop,如果不指定参数,则删除最后的元素

dict1.pop("Tome")

del

  • 删除单个元素
    格式:del 字典名[key]

  • 删除整个字典,删除后整个字典不存在
    格式:del 字典名

clear

clear后字典为空,但是字典本身存在

格式:字典名.clear()

遍历

for key in dict1:
    print(key,dict1[key])   #遍历的是字典里面的key

for value in dict1.values(): #遍历字典里面的value。dict.values是将dict字典里面的所有value以列表的形式返回
    print(value)
    
for k,v in dict1.items():   #dict.items()是将字典里面的元素以元组的形式返回
    print(k,v)  #输出key以及对应的value
    
for i,k2 in enumerate(dict1):
    print(i,k2) #i为key在字典里面的序号(从0开始),k2为键值

字典的常用操作

之字典为参数

len()

返回字典中key-value对的个数

格式:len(字典名)

之字典为调用者

keys()

格式:字典名.keys()

获得字典所有的键,以列表的形式

info = {"name":"lisi","age":23}
if "name" in info.keys():
	pass

values()

格式:字典名.values()

获取字典所有的值,以列表的形式

items()

格式:字典名.items()

以列表形式返回以元组形式存储的key-value键值对

my_dic={"name":laoli,"age":34}
for tmp in my_dic.items():
	print(tmp)
	print("key1:%s\tkey2:%s"%(tmp[0],tmp[1]))

list VS. dict

dict

  1. 查找和插入的速度极快,不会随着key-value的增加而变慢
  2. 需要占用大量的内存,内存浪费多(因为要存储key)

list

  1. 查找和插入的速度对着数据量的增多而减慢
  2. 占用空间小,浪费内存少

#小练习

看substr在str中出现了多少次

#法一:count
str.count(substr)

#法二:字典

Word = input("请输入要查找的单词:\n)

str = "sunck is a good man, sunck is a great man, sunck is a handsome man, sunck is a noble man"

myDic = {}
for i in str.split(" "):    #以空格切割字符串,循环处理列表中的每个元素,再以元素当作key去字典中提取数据
    v = myDic.get(i)    #如果直接myDic[key],当字典中不存在值为key的键时,程序会报错,所以用get
    if v == None:   #如果没有提取到,就以该元素作为key,1作为value,存进字典
        myDic[i] = 1
    else:
        myDic[i] += 1   #如果提取到了,则将对应的value+1
print(myDic[Word])  #再以该key去字典提取value

猜你喜欢

转载自blog.csdn.net/qq_34873298/article/details/89575943