python 字典,字典嵌套,字典遍历
字典(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])
#查:通过字典的键去查询要查询的内容