python基础数据类型(三)字典
1.字典dict介绍
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的(python3.5及3.5以下版本无序),且key必须是可哈希的。
不可变的数据类型:tupe、bool、int、str #可哈希
可变的数据类型:list、dict、set #不可哈希
dict key 必须是不可变与可哈希的数据类型;
dict value 可以是任意数据类型
dict 优点:利用二分查询法查找数据,存储大量的关系数据。
dict 缺点:无序的(python3.5及3.5以下版本无序)
2.dict增
#增 dic1 = {'age':18,'name':'jason','sex':'male'} #one dic1['high'] = 185 #没有键值对增加 print(dic1) dic1['age'] = 16 #如果键已存在,则将值覆盖 print(dic1) #two dic1.setdefault('weight') #默认没有写值,那对应的值是 None print(dic1) dic2 = dic1 dic3 = dic1 dic2.setdefault('weight',190) #如果键已经存在,不做任何改变,如果没有才添加 print(dic2) dic3.setdefault('hobby','girl') print(dic3)
3.dict删
#删除 dic1 = {'age':18,'name':'jason','sex':'male'} #one print(dic1.pop('age')) #根据键名删除键值对,返回此键对应的值 print(dic1) print(dic1.pop('abc',None)) #如果要删除的键名不存在字典中,可以自定义返回值。 print(dic1.pop('abcd','在字典中找不到此键')) print(dic1) #two print(dic1.popitem()) #python3.5及3.5以前版本是随机删除一个键值对,返回被删除的键值对。 print(dic1) #three del dic1['name'] #指定键名删除键值对,如要删除的键不在字典中,则会报错。 print(dic1) del dic1 #不指定键名表示删除整个字典 print(dic1) #继续打印字典会报错 #four dic1.clear() #清空字典 print(dic1) dic1 = {'age':18,'name':'jason','sex':'male'}
4.dict改
dic1 = {'age':18,'name':'jason','sex':'male'} #改 #one dic1['age'] = 16 #通过指定键名直接修改键值对中的值 print(dic1) #two dic1 = {'age':18,'name':'jason','sex':'male'} dic2 = {'name':'alex','weight':75} dic2.update(dic1) #将dic1与dic2中相同的键值对更新到dic2字典中,将dic1中有dic2中没有的键值对更新到dic1字典中 print(dic1) print(dic2)
5.dict查
#查 #one dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'} print(dic1.keys()) #返回字典中所有的键名 print(dic1.values()) #返回字典中所有的值 print(dic1.items()) #返回字典中所有的键值对 #two dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'} for i in dic1: #for循环中,默认不指定字典的返回条件时,与dict.keys效果一样 print(i) for i in dic1.keys(): print(i) for i in dic1.values(): #在for循环中拆分出所有键值对的值出来 print(i) for k,v in dic1.items(): #将字典中的键与值分别循环复制到变量K与v中 print(k,v) #three dic1 = {'age': 18, 'name': 'jason', 'sex': 'male'} print(dic1.get('name','没有这个键')) #通过键名查看键值对中的值,如果字典中存在此键,则返回的是值,如果没有此键名,返回设置好的值
6.汇总总结
#增2种方法 dict['key'] = '不可变的数据类型' #没有此键值对时向字典中增加,有此键值对覆盖之前的值。 dict.setdefault('key','value') #如果没有此键值对,才会向字典中增加,反之不做改变。 #删5种方法 dict.pop('key',None) #按key删除键值对,可自定义返回值 dict.popitem() #无序随机删除一个键值对 del dict #删除整个字典 del dict['key'] #指定key删除键值对,如没有则报错 dict.clear() #清空字典 #改2种方法 dict['key'] = '不可变的数据类型' #通过指定key直接修改键值对中的值 dict2.update(dict1) #将dict1中的数据更新到dict2中 #查 print(dict.keys()) #返回字典中所有的键名 print(dict.values()) #返回字典中所有的值 print(dict.items()) #返回字典中所有的键值对 for i in dict #for循环查看字典内容 dict.get('key',None) #通过Key查找键值对,返回自定义的值