字典操作方法

‘’’
字典是一种容器数据类型,用于存储键值对(key-value)的数据集合
一、特点
1)通过一个key对应一个确定唯一的值
2)可变性:可以通过索引修改、删除或插入元素,可以改变列表的长度、内容和顺序
3)异构性:可以包含不同类型的元素,如string、int、float、list等
4)无序性:python3.7+版本是有序

‘’’
def dict_op():

'''
    keys() 用来获取字典中所有的key,保存到一个列表中,并以dict_keys类型返回
    格式:  .keys()
'''
d1 = {'name': 'Tom', 'age': 25, 'gender': True, 'hobby': {'first': ('eat', 'drink'), 'second': 'play'}}
ks = d1.keys()
print(ks)
print(type(ks))

'''
    values() 用来获取字典中所有的key,保存到一个列表中,并以dict_values类型返回
    格式: .values()
'''
vs = d1.values()
print(vs)
print(type(vs))

'''
    items() 用来获取字典中所有的键值对,每一个元素值都以一个元祖保存,并将所有元素
            元组保存到一个列表中,并以dict_items类型返回
            格式: .items()
'''
its = d1.items()
print(its)
print(type(its))

'''
    get(key,default) 用来获取key对应的值,如果指定的key不存在,则返回默认值
    字典对象[key]的形式获取值,key不存在时会抛出错误
'''
gets = d1.get('time','empty')
print(gets)
print(type(gets))

gets = d1.get('name','empty')
print(gets)
print(type(gets))
print(d1)

'''
    setdefault(key,default) 给一个不存在的key添加一个默认值并将该键值对保存到字典中。
    在一些场景中,字典的key存在,却没有对应的值,此时可以使用该方法,为当前的key添加一个默认值:
    比如服务端发起请求时携带的请求头中的信息,,,只加不改
'''
d1 = {'name': 'Tom', 'age': 25, 'gender': True, 'address':'beijing' }
d1.setdefault('gender','male')#此方法不会改变原有key的值
print(d1)
d1.setdefault('hobby1','eat')
print(d1)
d1.setdefault('hobby2')#不给默认值,字典中显示None
print(d1)
d1.setdefault('hobby2','play')#不给默认值,字典中显示None
print(d1)

'''
    fromkeys(keys,val) 用于创建一个新字典,以序列keys中元素做字典的键,value为所有键对应的初始值,默认为None
    该方法为静态方法,需要使用字典类型名dict调用。
    该方法如果只给定keys参数,则所有的key对应值都为默认值None
    如果给的val值,则所有的key对应值都为val
    此方法比较少用
'''
ks = ['name','age','hobby']#有一组其他数据类型的数据
s1 = dict.fromkeys(ks,'hi')
print(s1)
s1 = dict.fromkeys(ks,'无')
print(s1)

'''
    update(s/iterable) 使用参数中的数据更新到当前字典
    该方法的参数可以接收一个字典(大多数的使用方法),也可以接受一个可迭代对象,如果参数数据中的key在当前字典中
    不存在,则将键值对添加到当前字典中
'''
#更新目标数据是一个字典
d1 = {'name': 'Tom', 'age': 25, 'gender': True, 'address':'beijing' }
newd1 = {'name': 'Jack','hobby':'eat'}
d1.update(newd1)
print(d1)
#更新目标数据是一个可迭代对象
d1 = {'name': 'Tom', 'age': 25, 'gender': True, 'address':'beijing' }
newd1 = (('name','Jack'),['hobby','eat'])
d1.update(newd1)
print(d1)

'''
    popiterm() 用来获取并删除字典中最后一个键值对,返回一个元组
    如果字典为空时,则抛出错误
'''
d1 = {'name': 'Tom', 'age': 25, 'gender': True, 'address':'beijing' }
d1.popitem()
print(d1)
# d1.popitem()
# print(d1)
# d1.popitem()
# print(d1)
# d1.popitem()
# print(d1)
# d1.popitem()#空字典,抛出错误
# print(d1)
'''
    pop(key) 用来获取并删除字典中指定key对应的键值对,返回一个元组
    如果指定key不存在时,则抛出错误
'''
d1.pop('name')
print(d1)
# d1.pop('name')#不存在指定key时跑错错误
# print(d1)


'''
    clear() 清空字典中所有键值对元素

'''
d1.clear()
print(d1)#返回空字典