一,字典
字典是Pyhthon的基础数据类型之一:字典可以存储大量的数据,关系型数据,同样他也是Python种唯一的映射类的数据类型。
数据类型的分类:
可变的(不可哈希)数据类型:list,dict
不可变的(可哈希)数据类型:str,int,bool,tuple
dic = {'name':'jin','age':18,'sex':'male'}
键值对形式存在:键:值
字典的键必须是不可变的数据类型。(工作中:都是由数字,或者str组成)
字典的值是任意数据类型,对象
优点:1.字典可以存储大量的数据,关系型数据
2.查询速度快
补充:py3.5之前包括3.5,字典是无序的数据类型,py3.6开始,是有序的数据类型。
#增 dic = {'name':'taibai','age':18} #第一种: 有此key就是改,无此key就添加 dic['sex'] = '男' dic['name'] = 'alex' #第二种:setdefault 有此key则不做任何操作但是给我返回对应的值,无此key则添加 dic.setdefault('sex') dic.setdefault('habby','讲课') dic.setdefault('name','alex') #不做操作,返回对应的值 print(dic.setdefault('name','alex')) print(dic)
#删 #pop 通过键去删除键值对,也有返回值,如果没有此键,并设置了第二参数,则不会报错,并且返回第二个参数 dic.pop('name') print(dic.pop('name1',None)) print(dic.pop('name1','没有该键值')) #clear清除字典内容 dic.clear() print(dic) #popitem:3.5之前随即删除某个键值对,3.6以后,删除最后一组键值对,有返回值 print(dic.popitem) print(dic) #del 按照键值删 del dic['name] 按照键值删 #内存级别上删除整个字典 del dic print(dic)
#改 #第一种:按键改,若键值对不存在则添加 dic['age'] = 25 print(dic) #第二种: #update,两个字典 dic = {'name':'jin','age':18,'sex':'male'} dic2 = {'name':'alex','weight':75} dic.update(dic2) #将dic2种的所有键值对覆盖并添加到dic中,dic2不变 print(dic) print(dic2) #update的另一种方式 dic.update(a='66',b='222') #若键值对不存在则在末尾追加 dic.update(name='taibai') print(dic)
#查 dic['name'] #按键值查 dic['name1'] #若键不存在,会报错 #get 通过键查询键值对,如果没有此键,不会报错,默认返回none,若设置了第二参数,则返回第二个参数 dic.get('name') dic.get('name1') dic.get('name1','没有此键')
#字典常用方法 #dic.keys() print(dic.keys(),type(dic.keys())) #类似于列表的容器中 ll = list(dic.keys()) #可以转化为列表 print(ll) for key in dic.keys(): print(key) #dic.values() print(dic.values()) print(list(dic.values())) #dic.items() 可转化成list,可偏历 print(dic.items()) print(list(dic.items())) for i in dic.items(): ''' i = ('name','太白') i = ('age',18) ''' print(i) for k,v in dic.items(): ''' k,v = ('name','太白') k,v = ('age',18) ''' print(k,v) #补充:分别赋值 a,b = 10,20 print(a,b) a,b = [(1,2),(3,4)] print(a,b) # a = 10 b = 20 a,b = b,a print(a,b)
#字典的嵌套 dic = {'name_list': ['wang', 'alex', 'sun', 'taibai'], 1: {'name': 'taibai', 'age': 18, 'sex': '男'}, (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}] #1,给 name_list对应的列表追加一个值: 大人. dic['name_list'].append('大人') print(dic) 2,将name_lsit对应的alex 变成全部大写. dic['name_list'][1] = dic['name_list'][1].upper() print(dic) # 3, 将1对应的字典添加一个键值对: weight : 75 dic[1].setdefault('weight',75) print(dic) # 4,将1 对应的字典的name键对应的名字taibai 换成alex dic[1]['name'] = 'alex' print(dic) # 5,将 {'ip': '192.168.1.1', 'port': 3306} 次字典的port键值对删除. dic[(1,2)][1].popitem() print(dic) del dic[(1,2)][1]['port'] print(dic) dic[(1,2)][1].pop('port') print(dic)