数据类型划分:可变数据类型,不可变数据类型。
不可变数据类型:元祖,bool,int,str 可哈希(Hash)
可变数据类型:list,dict,set 不可哈希
dict 字典:
key 必须是不可变数据类型,可哈希。
value 任意数据类型。
优点:二分查找法查询,存储大量关系型数据。
特点:无序的。
dic = { 'name':['大猛','小孟'], 'pys9':[{'num':71,'age':18}, {'num':71,'age':18}], True:1, (1,2,3):'没意义', 2:'二哥', }
dic = {'name':'许志柱','age':28,'gender':'男'}
增:
dic['high']=175#没有的键值对,添加 dic['age'] = 18#已有的键,覆盖原来的值。 setdefault()#有键值对,不做任何操作。没有才添加。 dic.setdefault('weight') dic.setdefault('weight',150) dic.setdefault('name','许小志')
删:
dic = {'name':'许志柱','age':28,'gender':'男'} pop()#按照键删除 print(dic.pop('age'))#有返回值,返回被删的值 print(dic.pop('love',None))#可设置返回值。 print(dic.popitem())#随机删除,返回一个元祖,删除的键值。 dic.clear() #清空字典 del dic['name']#没有返回值 del dic['name1']#如果没有给定键,会报错。所以删除尽量用pop del dic#在内存里删除整个字典,
改:
dic = {'name':'许志柱','age':28,'gender':'男'} dic['age'] = 18 dic2 = {'name':'许小志','sal':5000} dic2.update(dic)#把dic更新到dic2,dic与dic2,都有的,就覆盖。没有的,就添加。 print(dic)#dic不变 print(dic2)#dic2更新了
查:
dic = {'name':'许志柱','age':28,'gender':'男'} print(dic.keys(),type(dic.keys()))#是特殊的字典键类型,但又列表的功能 print(dic.values(),type(dic.values())) print(dic.items(),type(dic.items()))#是元祖,键值 for i in dic: print(i) for i in dic: print(dic[i]) for i in dic.keys(): print(i) for i in dic.values(): print(i) a,b = 1,2 print(a,b) a = 1 b = 2 a,b = b,a print(a,b)#用一行代码互换。 a,b = [1,2] a,b = [1,2],[3,4] a,b = (1,2) print(a,b) dic = {'name':'许志柱','age':28,'gender':'男'} for k,v in dic.items(): print(k,v) v = dic['name'] print(v) v1 = dic['nameee']#没有这个键,会报错。 print(v1) print(dic.get('name1','没有这个键'))#用键获取值,可以存入没有的返回值。默认为None print(dic.get('name'))
dict字典嵌套:
dic ={ 'name':['alex','wusir','taibai'], 'pys9':{ 'time':'1213', 'learn_money':19800, 'addr':'CBD', }, 'age':18 } dic['age'] = 58; dic['name'].append('日天') dic['name'][1] = dic['name'][1].upper() dic['pys9']['female'] = 6 print(dic)