字典(Dictionary)操作详解
字典为键值的形式,一个键对应一个值
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
一、创建字典
字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:
1 dict = {'name': 'sunzhicheng', 'age': '20', 'sex': 'boy'}
不可变类型:整型,字符串,元组 :字典只能用不可变类型来创建
可变类型:列表,字典
字典两大特点:
1.键唯一
2.无序
列表的两种创建方法:
1.第一种正常创建:
dic = {'name':'sunzhicheng','age':20,'sex':'boy','admin':30}
print(dic)
2.第二种通过函数创建:每个键值对都用一个括号表示,多个键值对之间用逗号,表示,键值对之间也是用逗号,表示的
dic1 = dict((('name','sunzhicheng'),('age',20),('sex','boy'),('admin',20)))
print(dic1)
字典的操作:
1.增:通过变量直接增加键值,通过dic增加了两个键值对:'age'= 18,'sex' = 'boy'
dic = {'name':'sunzhicheng'}
dic['age'] = 18
dic['sex'] = 'boy'
print(dic)
1.1增 setdefault方法:如果键存在不进行修改,如果键不存在,进行增加该条键值对
dic = {'name':'sunzhicheng'}
dic['age'] = 18
dic['sex'] = 'boy'
print(dic)
#键存在,不进行修改,并返回字典中的键对应的值。
ret = dic.setdefault('age',30)
print(dic)
print(ret)
# 键不存在,在字典中增加新的键值对,并返回键的值
ret1 = dic.setdefault('book',30)
print(dic)
print(ret1)
执行结果:
2.查:通过字典的键去查询要查询的内容
ic2 = {'name':'sunzhicheng','age':20,'sex':'boy'}
print(dic2['name'])
#查询字典里有哪些键keys 这个类型需要转换成list之后才能使用
print(dic2.keys(),"没转换的dict_keys类型") # 查出来的键都纯在类型是dict_keys
print(list(dic2.keys()),"转换后的列表类型")
print(list(dic2.values()),'取到字典里所有的值')
print(list(dic2.items()),'直接获取到键值对,已元组的类型拿到')
3.改: 直接对这个值进行修改
dic3 = {'name':'sunzhicheng','age':20,'sex':'boy'}
dic3['name'] = 'zhicheng'
print(dic3,'修改键为name的值')
3.1 update将另一个字典的内容付给dic3字典
dic4 = {'1':'1111','2':'2222','name':'333'}
dic3.update(dic4) # 将dic4里的内容添加到dic3里边,如果dic3里有这个键就会替换之前的内容,例如键name这个dic3里有这个键dic4的name就会替换name之前的值重,将新值333给键name
print(dic3,'dic4的增加给了dic3')
print(dic4,'dic4没有变化')
4.删: del,pop,popitem,clear
dic5 = {'name':'sunzhicheng','age':20,'sex':'boy','1':'1111','2':'2222','3':'333333'}
del dic5['age'] #删除字典中指定键值对
print(dic5)
red = dic5.pop('sex') #删除字典中指定键值对并返回值
print(dic5)
print(red) #查看返回的内容
dic5.popitem() #随机删除
print(dic5,'随机删除了')
dic5.clear() #清空字典,字段存在,但是内容没有了
print(dic5)
5.字典嵌套
av_catalog = {
'欧美':{
'www.youporn.com':['很多免费的,世界最大','质量一般'],
'www.pornhub.com':['很多免费的,很大','质量比youpirn高点'],
'letmedothistoyou.com':['多事自拍,高质量图片很多','资源不多,更新慢'],
'x-art.com':['质量很高,真的很高','全部收费,屌丝请绕行']
},
'日韩':{
'tokyo':['质量很高,个人已经不喜欢日韩范了','听说是收费的']
},
'大陆':{
'1024':['全部免费,好人一生平安','服务器在国外,慢']
}
}
av_catalog['欧美']['www.youporn.com'][1] = '高高清清' #修改指定的值,首先找到大的字典里的键,然后在找到资格字典里套的这个字典的键,然后在找到要修改的这个内容在列表的位置。
print(av_catalog)
6.字典排序:字典排序根据,键来排序
dic6 = {2:333,4:222,3:111}
print(sorted(dic6.keys())) #按照键排序
print(sorted(dic6.values())) #按照值排序
print(sorted(dic6.items())) #按照键排序
7.字典遍历
#字典遍历的两种方式
# for i,v in av_catalog['欧美'].items(): #打印键及键下的值
# print(i,v)
for i in av_catalog:
print(i,av_catalog[i])
#查:通过字典的键去查询要查询的内容