存多个值,key-value存取,取值速度快,无序的
1 定义:key必须是不可变类型,value可以是任意类型 2 d={[1,2,3]:1} #列表不能当做字典的key 3 d={(0,'mac'):3000} 元组可以是 字典 4 5 举例 6 info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
按key存取值:可存可取
1 print(info['sex']) 2 info['hobbies']=['read','music','play','sleep','eat'] 3 print(info)
长度len
print(len(info))
成员运算in和not in 返回的是 True 和False
删除
1 print(info.pop('name')) 2 print(info.pop('name1213','确实是没有的,我的哥')) 如果不存在 不会崩溃 3 print(info.pop('name1213',None))
键keys(),值values(),键值对items()
print(info.keys()) 可迭代类型
print(info.values()) 可迭代类型
print(info.items()) 可迭代类型
返回的值 看着是列别不过不是列表 不可以直接使用 是 dic_类型
需要使用next()去取值.
循环
常用方法 取出
1 for key in info.keys(): 2 print(key) 3 for val in info.values(): 4 print(val) 5 6 for item in info.items(): 取出来的是一个元组 7 print(item[0],item[1])
info={'name':'egon','age':18,'sex':'male'}
print(info['name123']) 会报错
推荐字典取值方式 .get()
info.get('name123','呵呵呵')
推荐改值的方式
info.setdefault('hobbies',['read','music']
使用get方法取值 即使 'name123' 不存在在列表中也不会报错 返回 预设的 呵呵
info.popitem()
随机删除键值对 返回删除的值 (元组)
1 for k,v in info.items(): #k,v=('name', 'egon') 2 print(k,v) 取出来的直接是key和value值 3 print(info.setdefault('hobbies',['read','music'])) #有则不改,返回已经有的值,没有则新增,返回新增的值 4 print(info)
1 print(id(info.setdefault('hobbies',[]))) 2 print(id(info['hobbies'])) 3 l=[] 4 5 info={'name':'egon','age':18,'sex':'male',} 6 if 'hobbies' not in info: 7 info['hobbies']=[] 8 info['hobbies'].append('music') 9 else: 10 info['hobbies'].append('read') 11 12 if 'hobbies' not in info: 13 info['hobbies'] = [] 14 info['hobbies'].append('music') 15 else: 16 info['hobbies'].append('read') 17 18 print(info) 19 20 info.setdefault('hobbies',[]).append('music') 21 22 # {'name': 'egon', 'age': 18, 'sex': 'male', 'hobbies': ['music', ]} 23 info.setdefault('hobbies',[]).append('read') #['music', ].append('read') 24 print(info) 25 26 了解 27 info_new={'a':1,'age':19} 28 info.update(info_new) 29 print(info) 30 31 dic={'name':None,'age':None,'sex':None,'hobbies':None} 32 dic1={}.fromkeys(['name','age','hobbies'],None) 33 print(dic1)