7、python_dict(字典)


字典是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
  •  字典的内置函数方法
cmp(dict1, dict2)          比较两个字典元素。
len(dict)                  计算字典元素个数,即键的总数。
str(dict)                  输出字典可打印的字符串表示。
type(variable)             返回输入的变量类型,如果变量是字典就返回字典类型。
dict.clear()               删除字典内所有元素
dict.copy()                返回一个字典的浅复制
dict.fromkeys()            创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key,default=None) 返回指定键的值,如果值不在字典中返回default值
dict.has_key(key)-         如果键在字典dict里返回true,否则返回false
dict.items()               以列表返回可遍历的(键,值)元组数组
dict.keys()                以列表返回一个字典所有的键
dict.setdefault(key,default=None)和get()类似,但如果键不已经存在于字典中,将会添加键并将值设为default
dict.update(dict2)         把字典dict2的键/值对更新到dict里
dict.values()              以列表返回字典中的所有值