字典是python中唯一一个映射类型,它是以{}括起来的键值对组成.在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key_value保存在这个地址中,这种算法称为hash算法,所以,在dict中存储的Key-value中的key是必须是可以Hash的,hash具有雪崩效应,是不可变的,采用哈希算法是能够准确的计算内存地址而规定的
已知可哈希(不可变)的数据类型:int、str、tuple、bool
不可哈希(可以变)的数据类型:list、dict、set
语法:{key1:value1,key2:value2....}
注意:key必须是不可变的(可以hash)的;value没有要求,可以是任何类型的数据
dict = {'jay': '周杰伦', 'jj': '林俊杰','eason':'陈奕迅'} print(dict) #{'jay': '周杰伦', 'jj': '林俊杰', 'eason': '陈奕迅'}
字典的增删改查
- 增
dic = {"昆凌":"杰伦老婆"} dic['章子怡'] = "王峰老婆" #新增 print(dic) #{'昆凌': '杰伦老婆', '章子怡': '王峰老婆'} dic['章子怡'] = "威廉姆特单的老婆" #如果key重复了,会替换掉原来的key print(dic) #{'昆凌': '杰伦老婆', '章子怡': '威廉姆特单的老婆'} dic.setdefault("马蓉","王宝强的前妻") print(dic) #-{'昆凌': '杰伦老婆', '章子怡': '威廉姆特单的老婆', '马蓉': '王宝强的前妻'} dic.setdefault("马蓉","松泽的现任?") #如果字典中包含了这个key,setdefault将不起作用 print(dic) #{'昆凌': '杰伦老婆', '章子怡': '威廉姆特单的老婆', '马蓉': '王宝强的前妻'}
- 删
dic = {'jay': '周杰伦', 'jj': '林俊杰','eason':'陈奕迅'} dic.pop("jay") #删除周杰伦 print(dic) #{'jay': '周杰伦', 'jj': '林俊杰', 'eason': '陈奕迅'} dic = {'jay': '周杰伦', 'jj': '林俊杰','eason':'陈奕迅'} del dic["jay"] #删除周杰伦 print(dic) #{'jj': '林俊杰', 'eason': '陈奕迅'}
- 改
dic = {'jay': '周杰伦', 'jj': '林俊杰','eason':'陈奕迅'} dic1 = {"jay":"周洁轮","jj":"林俊杰","esaon":"成一询","vava":"王承泽"} dic.update(dic1) print(dic) #{'jay': '周洁轮', 'jj': '林俊杰', 'eason': '陈奕迅', 'esaon': '成一询', 'vava': '王承泽'}
- 查(一般是通过key来查找具体的数据)
dic = {'jay': '周杰伦', 'jj': '林俊杰','eason':'陈奕迅'} print(dic["jay"]) #周杰伦 print(dic.get("eason")) #陈奕迅 print(dic.get("剑圣")) #None dic.setdefault("及时雨","宋江") print(dic) #{'jay': '周杰伦', 'jj': '林俊杰', 'eason': '陈奕迅', '及时雨': '宋江'}
- 字典的常用操作
dic = {"及时雨":"宋江","小李广":"华荣","黑旋风":"李逵"} print(dic.keys()) #dict_keys(['及时雨', '小李广', '黑旋风']) for key in dic.keys(): print(key) #及时雨\小李广\黑旋风
print(dic.items()) #dict_items([('及时雨', '宋江'), ('小李广', '华荣'), ('黑旋风', '李逵')]) 拿到的是键值对
print(dic.items()) for item in dic.items(): print(item[0]) #及时雨\小李广\黑旋风 拿到的是key print(item[1]) #宋江\华荣\李逵 拿到的是value