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查找键值对,返回自定义的值