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])

 

 

 

 

 

 

 

#查:通过字典的键去查询要查询的内容
posted on 2018-10-16 17:31  子非鱼的  阅读(42700)  评论(4编辑  收藏  举报