字典和集合
字典
字典没有索引和切片,但是字典可嵌套
字典可以直接强转为字符出类型
for k,v in dic.items() #获取到字典中的所有键值对,解构给前面俩变量 print(k,v) for i in dic.values(): print(i) #获取到字典中的每一个值 for i in dic: print(i) #获取到字典中的每一个键 for i in dic.keys(): print(i) #获取到字典中的每一个键
dic = {1:"今天",2:"你",3:"好美"}
dic = str(dic)
print(dic)
print(type(dic))#这样改过之后,你就能把字典写进文件里了
循环字典的过程中进行添加键值对,会报错
增:
1.新key表示添加
dic = {"意大利": "李云龙", "美国": "美国往事"} dic["日本"] = "东京审判" dic["韩国"] = "釜山行"
2.setdefault(key,value) 指定键、值添加
dic = {"意大利": "李云龙", "美国": "美国往事"} dic.setdefault("hello","我爱你中国") #key不重复,添加成功,返回value print(dic.setdefault("意大利","真棒")) #由于字典里这个有同样的key,返回值就是字典里的key现有value
删:
1.pop(键) 指定元素删除
dic = {"意大利": "李云龙", "美国": "美国往事"} dic.pop("美国") print(dic) 输出结果:{'意大利': '李云龙'}
2.popitem() 随机删除
dic = {"意大利": "李云龙", "美国": "美国往事"} dic.popitem()
3.del dic[key]
4.clear() #清空
改:
字典value是否可以添加,要看它的类型,如果是可变类型,就能添加,如果不是,就不能添加
1.老key = 值
# dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"} # # dic['河南'] = "烩面" # 老key = 值 # print(dic)
2.dic.update(d) #把d更新到dic中
查:
1.dic[key] #如果key不存在就会报错
dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} print(dic1["赵四四"]) #KeyError:"'赵四四' key不存在
2.get() 有2个参数,如果只给一个,当key不存在时就返回空
dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} # print(dic1.get("刘能能")) # None 当key不存在返回None # print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None
3.setdefault() 能查也能添加,如果字典里没有这个键值对,就添加,如果有这个键,就返回此键的值
dic = {"意大利": "李云龙", "美国": "美国往事"} dic.setdefault("hello","我爱你中国") #key不重复,添加成功,返回value print(dic.setdefault("意大利","真棒")) #由于字典里这个有同样的key,返回值就是字典里的key现有value
字典的其他操作
update() #覆盖
# dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} # dic2 = {"赵四":"宝宝", "刘能":"萌萌", "皮校长":"皮长山"} dic1.update(dic2) #把dic2中的内容更新到dic1中 print(dic1) print(dic2)
===========================================================================================
集合(set)
没有索引和切片!
集合是可变的数据类型,但是它要求里面的元素不可以是可变类型
# 集合本身是可变的数据类型 . 不可哈希 # 集合套集合->不能互相嵌套的 # 集合中的元素必须可哈希(不可变的)
添加
add
thisset.add("Facebook")
s.update( x ) # 参数可以是列表,元组,字典等
*****集合可以去重复
lst = ["麻将", "牌九", "骰子", "扑克", "老虎", "骰子", "扑克", "老虎", "扑克", "老虎", "扑克", "老虎"]
s = set(lst) #把列表转化成字典,去重复
print(s)
lst = list(s) #再把去重的字典转换成列表
print(lst)
增:
1. set.add() #添加到集合
2. update() #迭代添加
删:
1. set.pop() #随机删除一个
2. remove(元素) #指定元素删除 ,无返回值,直接把原内容上改掉了,不许要再接收
3.clean() #清除集合
改:
先删后添就是改
集合的其他操作
交集 #就是查找重复
1.& #与字符
2.intersection()
s1 = {"门神", "灯神", "灯神你在笑什么?"} s2 = {"门神", "灯神", "你俩在干什么?"} print(s1 & s2) print(s1.intersection(s2))
并集: #就是合到一起
s1 = {"门神", "灯神", "灯神你在笑什么?"} s2 = {"门神", "灯神", "你俩在干什么?"} print(s1 | s2) print(s1.union(s2))
差集
1. set.difference(set1) #查看set跟set1的不同
# s1 = {"门神", "灯神", "灯神你在笑什么?"} # s2 = {"门神", "灯神", "你俩在干什么?"} # print(s1 - s2) # s1中特有的内容 # print(s1.difference(s2))
反差集: #就是两个集合中特有的内容
1. ^
2.symmetric_difference()
# s1 = {"门神", "灯神", "灯神你在笑什么?"} # s2 = {"门神", "灯神", "你俩在干什么?"} # print(s1 ^ s2) # 两个集合中特有的内容 # print(s1.symmetric_difference(s2))
集合套集合
1. frozenset()
# s = frozenset({"哈哈","呵呵"}) # 不可变的数据类型(集合) # for el in s: # print(el)
------------------------------------------------------------------------------------------------------------------------------
random.randint(a,b) #返回范围[a, b]中的随机整数,包括两个端点。