python-day5-字典,集合相关方法

# ### 字典相关的函数
# 增
# 传统添加键值对 (推荐)
dic = {}
dic["top"] = "the shy"
dic["middle"] = "rookie"
dic["bottom"] = "jacklelove"
print(dic)

#fromkeys() 使用一组键和默认值创建字典
lst = ["top","middle","bottom"] # 把所有键放到列表中
dic = {}.fromkeys(lst,None) # 把列表中的每个键都赋值None进行初始化,形成字典
print(dic) # 快读批量创建字典的键值对

# 注意点
"""字典中的三个键所指向的列表是同一个 , 不推荐"""
dic = {}.fromkeys(lst,[])
print(dic)
dic["top"].append(1)
print(dic)
# 改写
"""
duc["top"] = []
duc["middle"] = []
duc["bottom"] = []
"""

# 删
dic = {'top': 'the shy', 'middle': 'rookie', 'bottom': 'jacklelove'}
#pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)
res = dic.pop("top")
print(res)
print(dic)

# 当获取不存在的键时,直接报错
# res = dic.pop("top111222334")
# 可以为不存在的键设置默认值,防止报错
res = dic.pop("top111222334","字典中没有这个键")
print(res)

#popitem() 删除最后一个键值对
print("<===>")
dic = {'top': 'the shy', 'middle': 'rookie', 'bottom': 'jacklelove'}
res = dic.popitem()
print(res)
print(dic)

#clear() 清空字典
dic.clear()
print(dic)


#改
dic = {'top': 'the shy', 'middle': 'rookie', 'bottom': 'jacklelove'}
# update() 批量更新(有该键就更新,没该键就添加)
dic_new = {"top":"wangwen","support":"神秘男孩","jungle":"xboyww"}
dic.update(dic_new)
print(dic)

#查
#get() 通过键获取值(若没有该键可设置默认值,预防报错)
# res = dic["top"]
# res = dic["top13224234"] error
# print(res)
# get可以预防报错,返回None
res = dic.get("top")
# 可以为不存在的键,设置默认值以做提示
res = dic.get("top13224234","该键不存在")
print(res)

dic = {"ssy":"睡觉","hqx":"喝酒","ww":"走神","cy":"溜号","zjw":"脑子快"}
#keys() 将字典的键组成新的可迭代对象
res = dic.keys()
print(res)

#values() 将字典中的值组成新的可迭代对象
res = dic.values()
print(res)

#items() 将字典的键值对凑成一个个元组,组成新的可迭代对象
res = dic.items()
print(res)

for k,v in dic.items():
print( k,v)

 

# ### 集合的相关操作
set1 = {"周杰伦","李宇春","赵忠祥"}
set2 = {"易烊千玺","掏粪男孩","这就是街舞","赵忠祥"}
# 交集 intersection
res = set1.intersection(set2)
print(res)

# 简写符号 &
res = set1 & set2
print(res)

# 差集
res = set1.difference(set2)
print(res)

# 简写符号 -
res = set1 - set2
print(res)

#union() 并集
res = set1.union(set2)
print(res)

# 简写符号 |
res = set1 | set2
print(res)

# 对称差集 symmetric_difference
res = set1.symmetric_difference(set2)
print(res)

# 简写符号 ^
res = set1 ^ set2
print(res)


set1 = {"周杰伦","李宇春","赵忠祥"}
set2 = {"周杰伦","李宇春"}
#issubset() 判断是否是子集
res = set1.issubset(set2)
print(res,"<====>")

# 简写符号 <
res = set1 <= set2
print(res)

#issuperset() 判断是否是父集
res = set1.issuperset(set2)
print(res,"<=====>")
res = set1 >= set2
print(res)

#isdisjoint() 检测两集合是否不相交 不相交 True 相交False
res = set1.isdisjoint(set2)
print(res)

# ### 集合相关的函数
setvar = {"唐人街探案3"}
# 增
#add() 向集合中添加数据 (一次只加一个)
setvar.add("姜子牙")
print(setvar)

#update() 迭代着增加(一次加一堆)
lst = ["隔壁姐姐家的爱情故事","关于摄像头如何安装不被别人发现","论跑路的重要性"]
setvar.update(lst)
print(setvar)

# 删
#clear() 清空集合
setvar.clear()
print(setvar)

#pop() 随机删除集合中的一个数据
setvar = {'唐人街探案3', '姜子牙', '关于摄像头如何安装不被别人发现'}
res = setvar.pop()
print(res)

#remove() 删除集合中指定的值(不存在则报错)
setvar = {'唐人街探案3', '姜子牙', '关于摄像头如何安装不被别人发现'}
setvar.remove("姜子牙")
# setvar.remove("姜子牙112") 不存在的直接删除会报错
print(setvar)

#discard() 删除集合中指定的值(不存在的不删除 ) 推荐使用
setvar = {'唐人街探案3', '姜子牙', '关于摄像头如何安装不被别人发现'}
# setvar.discard("姜子牙")
setvar.discard("姜子牙112") # 不存在的值不删除,不会报错
print(setvar)


# ### 冰冻集合 frozenset (了解)
"""冰冻集合只能做交叉并补,不能做增删相关的操作"""
setvar1 = ("a","b")
setvar2 = ("b","c")

# 冰冻集合只能做交叉并补
fz1 = frozenset(setvar1)
fz2 = frozenset(setvar2)
res = fz1 & fz2
print(res)

# 不能做增删相关的操作
# fz1.add("zzzs") error

 

posted @ 2022-05-15 17:46  Mr'liu  阅读(22)  评论(0编辑  收藏  举报