字典类型
字典类型
作用:用来记录多个值是用key对应值,key对value有描述性功能
定义:在{}内用逗号隔开多个key:value,其中value可以是任意类型,但是key是不可变类型,且不能重复
造字典的方式
取value值
d={'k1':111,(1,2,3):222} # d=dict(...)#key可以是字符串,元组
print(d['k1'])
>>>
111
print(d[(1,2,3)])
>>>
222
方式一
info=[
['name','egon'],
('age',18),
['gender','male']
]
d={}
for k,v in info: #赋值两个变量名一个当key,一个当value
d[k]=v
print(d)
>>>
{'name': 'egon', 'age': 18, 'gender': 'male'}
方式二:
d=dict(x=1,y=2,z=3)#通过dict功能的转换,转换成字典类型
print(d)
>>>
{'x':1,'y':2,'z':3}#把变量名转成key,值转成value
方式三
info=[
['name','egon'],
('age',18),
['gender','male']
]
res=dict(info) # 一行代码搞定上述for循环的工作
print(res)
>>>
{'name': 'egon', 'age': 18, 'gender': 'male'}
方式四
#只适合初始化字典用
keys=['name','age','gender']#只有key,再定义一个空的value值
d={}
for k in keys:
d[k]=None
print(d)
>>>
{'name':None,'age':None,'gender':None}
方式五:formkeys()
#只适合初始化字典用
keys=['name','age','gender']
d={}.formkeys(kesy,None)
print(d)
>>>
{'name':None,'age':None,'gender':None}
类型转换
info=[
['name','egon'],
('age',18),
['gender','male']
]
d={}
for k,v in info: # k,v=['name','egon'],
d[k]=v
print(d)
按key存取值:
可存可取
d={'k1':111}
针对赋值操作:key存在,则修改
d['k1']=222
>>>
{'k1':222}
针对赋值操作:key不存在,则创建新值
d['k2']=3333
print(d)
>>>
{'k1':222,'k2':333}
长度len
d={'k1':111,'k2':222,'k1':333,'k1':444}
print(d)
{'k1':444,'k2':222}#key是不可变的且唯一的,只会保留一位key
print(len(d))
>>>
2#代表只有连个key值与value
成员运算in和not in:
根据key来判断
d={'k1':111,'k2':2222}
print('k1' in d)#判断字典里是否有'k1'这个key,字典判断判断的是key,有则是True没有则是False
>>>
True
print(111 in d)#判断字典里是否有'111'这个key,字典判断判断的是key,有则是True没有则是False
>>>
False
删除
方式1:del()
通用的删除方式
d={'k1':111,'k2':222}
del #字典删除都是根据key删除,返回删除key对应的Value值
方式2:pop()
d={'k1':111,'k2':222}
d.pop('k2')
print(d)
>>>
{'k1':111}
res=d.pop('k2')#会返回删除对应key的对应的value值
print(res)
>>>
'k2':222
方式3:poptem() #随机删除
d={'k1':111,'k2':222}
res=d.popitem()#不确定会删除哪一个,不推荐使用
print(d)
print(res)#会返回元组类型(删除的key,value)
for循环
键keys()值value()键值items()
键keys(): 只取循环字典里面的key值
值values(): 只取循环字典里面的value值
键值items(): 把循环字典里面的key跟value都取出来
d={'k1':111,'k2':222}
for k in d.keys(): #只取循环字典里面的key值
print(k)
>>>
k1
k2
d={'k1':111,'k2':222}
for k in d: #普通的方法一样的可以只取key值
print(k)
>>>
k1
k2
d={'k1':111,'k2':222}
for v in d.values(): # 只取循环字典里面的value值
print(v)
>>>
111
222
d={'k1':111,'k2':222}
for k,v in d.items(): #把循环字典里面的key跟value都取出来
print(k,v)
>>>k1 111
k2 222
d={'k1':111,'k2':222}
for item d.items():
print(item)
>>>
('k1',111) #得到的结果是元组类型
('k2',222)
转成列表类型
print(list(d.keys()))
>>>
['k1','k2']
print(list(d.values()))
>>>
[111,222]
print(list(d.items()))
>>>
[('k1',11),('k2',22)]
clear(): 清空字典
get(): 按key取值
d={'k1':111}
d.get('k2') :根据key取值,容错性好
print(d['k2']) # key不存在则报错
print(d.get('k1')) # 111
print(d.get('k2')) # key不存在不报错,返回None
update(): 用新的字典去更新旧字典,一切一以新字典为准
d={'k1':111}
d.update({'k2':222,'k3':333,'k1':444})
print(d)
>>>
{'k1':444,'k2':222,'k3':333}
setdefauit(): 意思就是字典里有这歌key则什么都不变,如果没有则添加进去
info={}
res=info.setdefault('name','egon')
print(res)
>>>
{'name':'egon'}