五.Set
# set集合,set集合是无序的s= {1, 2, "小黑子", 3} print(type(s)) print(s) s= {1, 2, 3, "油饼食不食", []} # unhashable type: 'list'print(s) # 不可哈希:python中的set集合进行数据存储的时候.需要对数据进行哈希计算,根据计算出来的哈希值进行存储数据# set集合要求存储的数据必须是可以进行哈希计算的,# 可变的数据类型,list,dict,set# 可哈希:不可变的数据类型,int,str,tuple,bools=set() # 创建空集合s.add("一个真正的鳗") s.add("小黑子") s.add("ikun") print(s) s.pop() # 由于集合无序,测试的时候没法验证是最后一个,print(s) s.remove("小黑子") print(s) # 热想要修改,先删除,再新增s.remove("小黑子") s.add("我家哥哥") print(s) foritemins: print(item) # 交集,并集,差集s1= {"哥哥", "下蛋", "一个真正的鳗"} s2= {"ikun", "小黑子", "哥哥"} print(s1&s2) # 交集print(s1.intersection(s2)) print(s1|s2) # 并集print(s1.union(s2)) print(s1-s2) # 差集print(s1.difference(s2)) # 重要的作用:可以去除重复s1= {"周杰伦", "昆凌", "蔡依林", "侯佩岑"} print(s1) s1.add("周杰伦") print(s1) lst= ["周杰伦", "昆凌", "蔡依林", "侯佩岑", "周杰伦", "昆凌", "蔡依林", "侯佩岑", "周杰伦", "昆凌", "蔡依林", "侯佩岑"] print(lst) print(set(lst)) print(list(set(lst))) # 去除重复之后的数据是无序的。
六.字典
1.概念
# 首先,字典是以键值对的形式进行存储数据的# 字典的表示方式:{key:value,key2:value,key3:value}dic= {"jay": "周杰伦", "鸡哥": "蔡徐坤"} val=dic["jay"] print(val) # 字典的key必须是可哈希的数据类型# 字典的value可以是任何数据类型dic= {[]: 123} print(dic) # unhashable type: 'list'dic={"ikun":["小黑子1号","小黑子2号"]}
2.增删改查
dic=dict() dic["ikun"] ="小黄"dic[1] ="123"dic["ikun"] ="Lee"# 覆盖前面的元素print(dic) dic.setdefault("湖南", "臭豆腐") # 设置默认值.如果以前已经有了湖南了,setdefault就不起作用了dic.setdefault("湖南", "胡辣汤") print(dic) # 删除dic.pop("jay") # 根据key去删除print(dic) # 查询print(dic["jay"]) print(dic.get('jay')) print(dic["jay10086"]) # 如果key不存在,程序会报错. 当你确定你的key是没问题的,可以用print(dic.get('jay10086')) # 如果key不存在,程序返回None. 程序返回None.当不确定你的key的时候,可以用# Nonea=None# 单纯的就是空,表示没有的意思print(type(a)) # 小案例dic= { "小黑子1号": "油饼食不食", "小黑子2号": "香精煎鱼", "小黑子3号": "我家哥哥下蛋你别吃", "小黑子4号": "一个真正的鳗", "小黑子5号": "香翅捞饭食不食"} name=input("输入你想看的小黑子话") val=dic.get(name) ifvalisNone: print("你不是我们ikun的一员") else: print(val)
3.循环和嵌套
- 循环
dic= { "小黑子1号": "油饼食不食", "小黑子2号": "香精煎鱼", "小黑子3号": "我家哥哥下蛋你别吃", "小黑子4号": "一个真正的鳗", "小黑子5号": "香翅捞饭食不食"} # 1.可以用for循环,直接拿到keyforkeyindic: print(key, dic[key]) # 2.希望把所有的ky全都保存在一个列表中print(list(dic.keys())) # 拿到所有的key了# 3.希望吧所有的value都放在一个列表中print(list(dic.values())) # 4.直接拿到字典中的key和valueprint(dic.items()) forkey,valindic.items(): #可以拿到所有的key 和 val# key = item[0]# val = item[1]# print(key, val)#key,val = itemprint(key,val) a, b= (1, 2) # 元组或者列表都可以执行该操作,该操作被称为解构(解包)print(a) print(b)
- 嵌套
ikun= { "name": "小黄", "age": 20, "quotes": { "quote1": "油饼食不食", "quote2": "香精煎鱼", "hobby": { "be1": "唱", "be2": "跳", "be3": "rap" } }, "behave": [ {"行为1": "唱", "哥哥1": "鲲鲲"}, {"行为2": "跳", "哥哥2": "下蛋"}, {"行为3": "rap", "哥哥3": "篮球"} ] } # 小黄语录的爱好的行为1be1=ikun["quotes"]["hobby"]["be1"] print(be1) # 小黄语录的爱好be2改为篮球ikun["quotes"]["hobby"]["be2"] ="篮球"print(ikun) dic= { "1号小黑子": "油饼食不食", "2号小黑子": "香精煎鱼", "3号小黑子": "我家哥哥下蛋你别吃", "4号小黑子": "一个真正的鳗", "5号小黑子": "香翅捞饭食不食"} temp= [] # 存放即将要别除的keyforkeyindic: ifkey.startswith("1"): temp.append(key) #dictionary changed size during iterationfortintemp: #循环列表,删除字典中的内容dic.pop(t) print(dic)