字典是无序的,dict的相关方法:
一、关于字典的创建和显示
可直接创建字典,也可用dict(list)将满足格式要求的列表转换成字典。
# dic = {'name':'lucy','age':5,'sex':'female'} # 直接创建 li = [('name','lucy'),('age',5),('sex','female')] dic = dict(li) # 将列表转换成字典 # # 显示字典:键 # for i in dic.keys(): # print(i,end=' ') # name age sex # print() # # 显示字典:值 # for j in dic.values(): # print(j,end=' ') # lucy 5 female # print() # 显示字典:键值对 for i,j in dic.items(): print('{}:{}'.format(i,j)) print()
可以使用dict.fromkeys(list[,default])的方法新建字典,其中 list的值作为新建dict的键,default值为各键对应的值,默认为None,各键对应的值相同。
li = [('name','lucy'),('age',5),('sex','female')] dic = {} dic = dic.fromkeys(li) print(dic) #output:{('name', 'lucy'): None, ('age', 5): None, ('sex', 'female'): None} dic = dic.fromkeys(li,2) print(dic) #output:{('name', 'lucy'): 2, ('age', 5): 2, ('sex', 'female'): 2}
二、dict.clear() 清空字典
将字典内的元素全部清除,无返回值。
dic = {'name':'lucy','age':5,'sex':'female'}
for i,j in dic.items():
print('{}:{}'.format(i,j))
dic.clear() # 字典清空
if dic:
print('字典非空。')
else:
print('字典已空。')
三、dict.pop((key[,default=None]) 删除键,返回值
当字典中含有键’key‘时,返回键’key‘对应的值,删除字典中的该键值对。
View Code当字典中不含有'key’时,设置default时,返回设定值;若不设置default,会报错。
View Code四、dict.popitem() 删除键值对
从后向前删除一个键值对,并以元组tuple形式返回键值对。若字典为空,使用.popitem()时,报错。
View Code五、dict.copy() 浅拷贝字典
由于是浅拷贝,拷贝后的字典与原字典,在进行str、int等不可比对象的修改时,新建修改值,修改结果互不影响;但是在修改字典或者列表等可变对象时,互相影响。
#----------------创建----------------------------- dic = {'name':'lucy','age':5,'sex':'female','friends':{'name':'luna','age':6}} # 创建dict print('创建字典dic:') for i,j in dic.items(): print('{}:{}'.format(i,j)) print('-'*30) dic1 = dic.copy() # 浅拷贝dic1 print('浅拷贝字典dic1:') for i,j in dic1.items(): print('{}:{}'.format(i,j)) print('-'*30) # 测试字典浅拷贝后修改时,对原字典的影响 #-------------------修改1------------------- # 修改拷贝中的字符或数字,原字典不变 # dic1['sex'] = 'male' # print('原字典字符不变:') # for i,j in dic.items(): # print('{}:{}'.format(i,j)) # print('-'*30) # print('拷贝字典字符改变:') # for i,j in dic1.items(): # print('{}:{}'.format(i,j)) # print('-'*30) # #-------------------修改2------------------ # 修改拷贝中的字典、列表等,原字典改变 dic1['friends']['age'] = 7 print('原字典字符改变:') for i,j in dic.items(): print('{}:{}'.format(i,j)) print('-'*30) print('拷贝字典字符改变:') for i,j in dic1.items(): print('{}:{}'.format(i,j)) print('-'*30) #测试原字典修改后,对拷贝字典的影响 # #-------------------修改3------------------ # # 修改原字典中的字典、列表等,拷贝字典改变 # dic['friends']['age'] = 7 # print('原字典字符改变:') # for i,j in dic.items(): # print('{}:{}'.format(i,j)) # print('-'*30) # print('拷贝字典字符改变:') # for i,j in dic1.items(): # print('{}:{}'.format(i,j)) # print('-'*30) #-------------------修改4------------------ # # 修改原字典中的字符或数字时,拷贝字典不变 # dic['age'] = 7 # print('原字典字符改变:') # for i,j in dic.items(): # print('{}:{}'.format(i,j)) # print('-'*30) # print('拷贝字典字符不变:') # for i,j in dic1.items(): # print('{}:{}'.format(i,j)) # print('-'*30)
六、dict.get(key[,default=None]) 取键的值
若‘key'键存在,返回’key‘键对应的值;若’key‘键不存在,默认返回None,或者自定义返回值。
dic = {'name':'lucy','age':5,'sex':'female','friends':{'name':'luna','age':6}} # 创建dict
print(dic.get('name')) # 返回'name'键对应的值
print(dic.get('num')) # 键不存在,默认返回None
print(dic.get('num','never')) #键不存在,返回never
七、dict.setdefault(key[,default]) 取值或者设置
当‘key’键存在时,返回‘key’键对应的值;若‘key’键不存在,新建键值对‘key’:‘default’,‘default’默认None,可自定义,同时返回‘key’对应的值‘default’。
dic = {'name':'lucy','age':5,'sex':'female','friends':{'name':'luna','age':6}} # 创建dict
set_key = dic.setdefault('num',6)
# set_key = dic.setdefault('name')
print(dic)
print(set_key)
八、dict.update(dict1) 合并字典
当dict与dict1的相同键对应不同值时,dict值被改写;当dict与dict中含有不同键时,合并。无返回值。
dic = {'name':'lucy','age':5,'sex':'female'}
# dic1 = {'name':'luna','age':6}
# dic.update(dic1)
# print(dic) #output:{'name': 'luna', 'age': 6, 'sex': 'female'}
dic2 = {'num':9}
dic.update(dic2)
print(dic) #output:{'name': 'lucy', 'age': 5, 'sex': 'female', 'num': 9}
浙公网安备 33010602011771号