# -*- coding: utf-8 -*-
"""
Created on Fri Jul 24 09:37:44 2020
答疑: 李立宗 lilizong@Gmail.com
字典常用方法
"""
# 创建字典
a={'li':99,'zhang':66}
print(a)
# clear清空字典key-value对
b=a
b.clear()
print(b)
# =============================================================================
# del b #这是删掉的办法,没有了
# print(b)
# =============================================================================
# 取值对——get
a={'li':99,'zhang':66}
b=a
print(b.get('li'))
print(b.get('tian',"您找的值不存在"))
# print(b['tian']) #不存在报错
# get,取得key不存在,能够正常返回
# 直接调用不存在的key,会报错。
# update,更新
a={'li':99,'zhang':66}
b=a
# 更新已经存在的key值
b.update({'li':100})
print(b)
# 更新不存在的key值,相当于插入
b.update({'tian':99})
print(b)
# 获取元素
# items(),keys(),values()
print(b.items())
print(b.keys())
print(b.values())
#注意返回类型
bi=b.items()
print(type(bi))
bk=b.keys()
print(type(bk))
bv=b.values()
print(type(bv))
# 可以通过list将上述返回值转换为list
bil=list(bi)
bkl=list(bk)
bvl=list(bv)
print(type(bil),type(bkl),type(bvl))
print(bil)
print(bkl)
print(bvl)
# pop,popitem,更新
a={'li':99,'zhang':66,'tian':100}
b=a
w=b.pop('zhang','没找到')
print(w)
print(b)
w=b.pop('zhan','没找到') #没找到时,返回第二个参数
print(w)
w=b.popitem()
print(w)
print(b)
# 说明,popitem弹出实际存储的最后一个key-value对
# 实际上,由于字典存储是随机的,所以
# popitem一般理解就是随机地弹出一个key-value对
# setdefault设置默认值
# 该函数类似于get,从字典中根据key获取value
# 不过,如果key不存在,返回setdefault的指定值
a={'li':99,'zhang':66,'tian':100}
print(a.setdefault('li',100))
print(a.setdefault('wang',100))
print(a)
# fromkey构建字典的方法
a=dict.fromkeys(['li','wang']) #使用列表,value默认为空
print(a)
b=dict.fromkeys(('li','wang')) #使用元组,默认value为空
print(b)
c=dict.fromkeys(['li','wang'],100) #使用列表,默认值
print(c)
d=dict.fromkeys(('li','wang'),100) #使用元组,默认值
print(d)
#默认值是重复,不是一一对应
e=dict.fromkeys(['lilizong','wang'],(11,99))
print(e)