1、字典dict 基本概念字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中键必须是唯一的,但值则不必。
In [1]:{'小头爸爸': 35, '大头儿子': 6, '隔壁老王': 37} <class 'dict'>[{'age': 18, 'name': 'Tom'}, {'age': 19, 'name': 'Jack'}, {'age': 17, 'name': 'Alex'}]# 什么是映射?什么是字典dict ?name = ['大头儿子','小头爸爸','隔壁老王']age = [6,35,37]# 首先虽然序列是有顺序的,但还是不能直接把名字和年龄关联起来,这里只是顺序对上,且并没有一对一的关系dic = {'大头儿子':6, '小头爸爸': 35, '隔壁老王':37}print (dic,type (dic))# 用{}来表示,按照key :value 来表示字典中的元素,其中key 是键,value 是值,key-value 也就是键值对# 这里dic 就是一个字典类型的变量dic = [{'name':'Tom', 'age':18},{'name':'Jack', 'age':19},{'name':'Alex', "age":17}]print (dic)# 一个以字典为元素的列表,有没有觉得键值对很像数据中的字段和字段值?{'a': 2}{'var1': 1, 'var2': 'hello', 'var3': [1, 2, 3], 'var4': {'a': 1, 'b': 2}}{'var2': 'hello', 'var5': '添加一个值', 'var3': [1, 2, 3], 'var4': '任意修改其中一个值'}{}# 字典的特点dic = {'a':1,'b':2,'c':3}# 键值对,一定共同出现,不能只有一个dic = {'a':1,'a':2}print (dic)# 不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会被记住dic = {'var1':1, 'var2':'hello', 'var3':[1,2,3], 'var4':{'a':1,'b':2}}# key 必须是不可变对象,value 则可以是任意对象:数值,字符串,序列,字典print (dic)# 字典是一个无序集合,序列由于没有key 来做对应,所以以顺序来对应值# 序列有顺序,字典没有!dic['var5'] = '添加一个值' # 任意添加元素dic['var4'] = '任意修改其中一个值' # 任意修改元素del dic['var1'] # 任意删除元素print (dic)dic.clear() # 清空词典所有条目print (dic)del dic # 删除词典#print(dic)# 申明一个字典dic = {'a':1,'b':2}# 最简单直接的方式,手动书写申明一个字典变量,注意是:不是=dic =dict(m =10 ,n ='aa', h = [1,2,3])print(dic)# dict()函数lst1=[("a","fff"),("b","ggg")]lst2=[["c",1],["d",2]]lst3=(("e",[1,2]),("f",[3,4]))dic1 =dict(lst1)dic2 =dict(lst2)dic3 =dict(lst3)print(dic1,dic2,dic3)# dict()由序列生成一个字典,嵌套序列,可以是list或者tuplekeys = ["a", "b", "c"]dic1 =dict.fromkeys(keys)dic2 =dict.fromkeys(keys, 'hello')print(dic1,dic2)# 只有key,直接生成一个字典{'n': 'aa', 'h': [1, 2, 3], 'm': 10}{'a': 'fff', 'b': 'ggg'} {'d': 2, 'c': 1} {'f': [3, 4], 'e': [1, 2]}{'c': None, 'a': None, 'b': None} {'c': 'hello', 'a': 'hello', 'b': 'hello'} 小作业①用dict函数的时候,和直接申明一个字典,操作上什么区别?②用dict()函数从序列创建字典的时候,对序列有要求吗?必须是列表吗?③字典是无序的,强化一下④以dict()函数生成一个人的成绩单,包括语文,数学,外语,物理,化学几个元素2、字典常用操作字典内置函数&方法# 字典常用操作dic1 = {"a":1, "b":2}dic2 = {"c":3, "d":4}dic1.update(dic2)print(dic1,dic2)# dict.update()方法:更新/合并一个字典,把第二个字典合并到第一个字典,改变了第一个字典a = {'m':1 , 'n':2 , 'p':3}b = aa.update({'q':4})print(a,b)# 和序列的原理一样,a和b指向同一个字典,所以会一起更新a = {'m':1 , 'n':2 , 'p':3}b = a.copy()a.update({'q':4})print(a,b)# 通过.copy()方法,复制一个新的字典print(len(a))# 查看字典元素个数print('m'in a)print(1in a)# in / not in :判断是否包含,这里的判断对象是key{'a': 1, 'c': 3, 'd': 4, 'b': 2} {'c': 3, 'd': 4}{'n': 2, 'q': 4, 'm': 1, 'p': 3} {'n': 2, 'q': 4, 'm': 1, 'p': 3}{'n': 2, 'q': 4, 'm': 1, 'p': 3} {'m': 1, 'n': 2, 'p': 3}4TrueFalse3、字典的元素访问及遍历如何读取字典?1somewhereshopnothingNonedict_keys(['information', 'name', 'city']) <class 'dict_keys'>['information', 'name', 'city']dict_values([{'address': 'somewhere', 'num': 66663333}, 'shop', 'shanghai']) <class'dict_values'>[{'address': 'somewhere', 'num': 66663333}, 'shop', 'shanghai']dict_items([('information', {'address': 'somewhere', 'num': 66663333}), ('name', 'shop'), ('city', 'shanghai')]) <class 'dict_items'>[('information', {'address': 'somewhere', 'num': 66663333}), ('name', 'shop'), ('city', 'shanghai')]dic = {'a':1, "b":2, "c":3}print (dic['a'])#print(dic[1]) # 不能用序列的索引方式# 字典里面也就同样的意思,但字典没有顺序,以key 来作为指向,所以指向的key 必须存在poi = {'name':'shop', 'city':'shanghai', 'information':{'address':'somewhere', 'num':66663333}}print (poi['information']['address'])# 对于嵌套字典,输出嵌套内容,通过重复指向来输出print (poi.get('name'))print (poi.get('type',print ('nothing')))# .get(key)方法:直接查看key 的value ,如果没有相应key 则返回None ,添加print 参数可以多返回一个值print (poi.keys(),type (poi.keys()))print (list (poi.keys()))# .keys()方法:输出字典所有key ,注意这里的输出内容格式是视图,可以用list()得到key 的列表,类似range()print (poi.values(),type (poi.values()))print (list (poi.values()))# .values()方法:输出字典所有values ,原理同.keys()方法print (poi.items(),type (poi.items()))print (list (poi.items()))# .items()方法:输出字典所有items (元素),原理同.keys()方法poi = {'name':'shop', 'city':'shanghai', 'information':{'address':'somewhere', 'num':66663333}} for key in poi.keys():print(key)print('-------')for value in poi.values():print(value)print('-------')for (k,v) in poi.items():print('key为 %s, value为 %s'%(k,v))print('-------')# for函数遍历informationnamecity-------{'address': 'somewhere', 'num': 66663333}shopshanghai-------key为 information, value为 {'address': 'somewhere', 'num': 66663333}key为 name, value为 shopkey为 city, value为 shanghai-------小作业① dict.keys()生成的是不是列表?②如何判断一个value是否存在于字典中?。