字典类型

字典类型

作用:用来记录多个值是用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'}
原文地址:https://www.cnblogs.com/hm666/p/12495512.html