字典是无序的,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()
View Code

  可以使用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}
View Code

二、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('字典已空。')
View Code

三、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)
View Code

六、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
View Code

七、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)
View Code

八、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}
View Code