认识字典
# dict={0:'数字','a':'字符串',(1,2,3):"元组",True:"bool值"}# [1]:'list' TypeError: unhashable type: 'list'} # # print(dict[0])# 数字 # print(dict['a'])# 字符串 # print(dict[(1,2,3)])# 元组 # print(dict[True])# bool值 #不可变数据类型:int str tuple bool #可变数据类型: list dict set
操作
#字典的增加 # dic={} # dic['name']='周润发' # dic['age']=10 # print(dic) #{'name': '周润发', 'age': 10} # dic.setdefault('李嘉诚') #{'name': '周润发', 'age': 10, '李嘉诚': None} # dic.setdefault('李嘉诚','房地产') #如果dict已经存在key 李嘉诚,则setdefault不起作用 # print(dic) # {'name': '周润发', 'age': 10, '李嘉诚': None} # dic.update({'name': '周润发', 'age': 10, '李嘉诚': '有钱人','有钱人':'他就是有钱'}) # print(dic) #{'name': '周润发', 'age': 10, '李嘉诚': '有钱人', '有钱人': '他就是有钱'}
#pop里面必须填一个key # ret=dict.pop(0) # print(ret) #数字 # 随机删除,虽然总是删除最后一个,但是源代码里解释是some pair # D.popitem() -> (k, v), remove and return some (key, value) pair as a # 2-tuple; but raise KeyError if D is empty. # ret=dict.popitem() # print(ret) #(True, 'bool值'),python # del dict[0] # print(dict) #{'a': '字符串', (1, 2, 3): '元组', True: 'bool值'} # 清空字典所有的内容 # dict.clear() # print(dict) #{}
#查询 #dic={'id':1,"name":2333,'age':12} # print(dic['name']) #2333 # print(dic.get('age')) #12 # print(dic.get('id')) #1 # print(dic.get('nb','noyou'))#找到了返回值,找不到返回第二个参数 #noyou # print(dic.keys()) #dict_keys(['id', 'name', 'age']) # for i in dic: # print(i) # id # name # age # print(dic.values()) # for i in dic.values(): # print(i) # 1 # 2333 # 12 # print(dic.items()) #dict_items([('id', 1), ('name', 2333), ('age', 12)]) # for i in dic.items(): # print(i) # ('id', 1) # ('name', 2333) # ('age', 12) # for key,value in dic.items(): # print(key,value)
最后说一下关于key,大概hash做了什么如下图
类似于,hash把key 转换成 内存地址,通过内存地址更好的找到 key对应的value