目錄:
一、集合
思考:我們目前接觸到了列表、元組、字符串三個數(shù)據(jù)容器了。基本滿足大多數(shù)的使用場景為何又需要學習新的集合類型呢?
通過特性來分析:
(1)列表可修改、支持重復元素且有序
(2)元組、字符串不可修改、支持重復元素且有序
大家有沒有看出一些局限?
局限就在于:它們都支持重復元素
如果場景需要對內(nèi)容做去重處理,列表、元組、字符串就不方便了
而集合,最主要的特點就是:不支持元組的重復(自帶去重功能)、并且內(nèi)容無序
1.集合的定義
基本語法:
# 定義集合字面量
{元素,元素,......,元素}
# 定義集合變量
變量名稱 = {元素,元素,......,元素}
# 定義空集合
變量名稱 = set()
?和列表、元組、字符串等定義基本相同:
列表使用[? ]
元組使用( )
字符串使用"? "
集合使用{? }
?2.集合的常用操作
首先,因為集合是無序的,所以集合不支持:下標索引訪問但是集合和列表一樣,是允許修改的,所以我們來看看集合的修改方法
編號 | 操作 | 作用 |
1 | 集合.add(元素) | 集合內(nèi)添加一個元素 |
2 | 集合remove(元素) | 移除集合內(nèi)指定的元素 |
3 | 集合.pop() | 從集合中隨機取出一個元素 |
4 | 集合.clear() | 將集合清空 |
5 | 集合1.difference(集合2) | 得到一個新集合,內(nèi)含2個集合的差集原有的2個集合內(nèi)容不變 |
6 | 集合1.differenceupdate(集合2) | 在集合1中,刪除集合2中存在的元素集合1被修改,集合2不變 |
7 | 集合1.union(集合2) | 得到1個新集合,內(nèi)含2個集合的全部元素原有的2個集合內(nèi)容不變 |
8 | len(集合) | 得到一個整數(shù),記錄了集合的元素數(shù)量 |
(1)添加新元素
語法:集合.add(元素)將指定元素,添加到集合內(nèi)
結(jié)果:集合本身被修改,添加了新元素
my_set = {"Hello", "World"}
my_set.add("bite")
print(my_set) # 結(jié)果:{'World', 'bite', 'Hello'}(順序可能會變)
(2)?移除元素
語法:集合.remove(元素),將指定元素,從集合內(nèi)移除
結(jié)果:集合本身被修改,移除了元素
my_set = {"Hello", "World"}
my_set.remove("World")
print(my_set) # 結(jié)果:{'Hello'}
?(3)?從集合中隨機取出元素
語法:集合.pop(),功能,從集合中隨機取出一個元素
結(jié)果:會得到一個元素的結(jié)果。同時集合本身被修改,元素被移除
my_set = {"Hello", "World"}
element = my_set.pop()
print(my_set) # 結(jié)果:{'Hello'}
print(element) # 結(jié)果:World
(4)?清空集合
語法:集合.clear(),功能,清空集合
結(jié)果:集合本身被清空
my_set = {"Hello", "World"}
my_set.clear()
print(my_set) # 結(jié)果:set()
?(5)取出2個集合的差集
語法:集合1.difference(集合2),功能: 取出集合1和集合2的差集 (集合1有而集合2沒有的)
結(jié)果:得到一個新集合,集合1和集合2不變
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(set3) # 結(jié)果:{2, 3}
print(set2) # 結(jié)果:{1, 5, 6}
print(set1) # 結(jié)果:{1, 2, 3}
(6)?消除2個集合的差集
語法:集合1.difference_update(集合2)
功能:對比集合1和集合2,在集合1內(nèi),刪除和集合2相同的元素
結(jié)果:集合1被修改,集合2不變
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(set1) # 結(jié)果:{2, 3}
print(set2) # 結(jié)果:{1, 5, 6}
(7) 2個集合合并
語法:集合1.union(集合2)
功能:將集合1和集合2組合成新集合
結(jié)果: 得到新集合,集合1和集合2不變
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(set3) # 結(jié)果:{1, 2, 3, 5, 6}
print(set1) # 結(jié)果:{1, 2, 3}
print(set2) # 結(jié)果:{1, 5, 6}
二、字典
思考:老師有一份名單,記錄了學生的姓名和考試總成績,現(xiàn)在需要將其通過Python錄入至程序中,并可以通過學生姓名檢索學生的成績,由此引入了字典,使用字典可以用key取出 Value的操作
1.字典的定義
字典的定義,同樣使用{ },不過存儲的元素是一個個的 : 鍵值對,如下語法:
# 定義字典字面量
{key: value, key: value, ......, key: value}
# 定義字典變量
my_dict = {key: value, key: value, ......, key: valuel}
# 定義空字典
my_dict = {} # 空字典定義方式1
my_dict = dict() # 空字典定義方式2
注意:?字典內(nèi)Key不允許重復,重復添加等同于覆蓋原有數(shù)據(jù)
# 定義重復Key的宇典
my_dict1 = {"王力鴻": 99,"王力鴻": 88,"林俊節(jié)": 77}
print(f"重復key的字典的內(nèi)容是:{my_dict1}")
# 結(jié)果:重復key的字典的內(nèi)容是:{'王力鴻':88,林俊節(jié)':77}
2.字典數(shù)據(jù)的獲取
字典同集合一樣,不可以使用下標索升
但是字典可以通過Key值來取得對應的Value
# 語法,字典[Key]可以取到對應的value
stu_score = {"李四": 99, "張三": 88,"王二麻子": 77}
print(stu_score["李四"]) # 結(jié)果:99
print(stu_score["張三"]) # 結(jié)果:88
print(stu_score["王二麻子"]) # 結(jié)果:77
3.字典的嵌套
字典的Key和Value可以是任意數(shù)據(jù)類型(Key不可為字典)
那么,就表明,字典是可以嵌套的
需求如下: 記錄學生各科的考試信息
stu_score_dict = {
"王力鴻": {
"語文": 77,
"數(shù)學": 66,
"英語": 33
}, "周杰輪": {
"語文": 88,
"數(shù)學": 86,
"英語": 55
}, "林俊節(jié)": {
"語文": 99,
"數(shù)學": 96,
"英語": 66
}
}
print(f"學生的考試信息是:{stu_score_dict}")
# 結(jié)果:學生的考試信息是:{'王力鴻': {'語文': 77, '數(shù)學': 66, '英語': 33}, '周杰輪': {'語文': 88, '數(shù)學': 86, '英語': 55}, '林俊節(jié)': {'語文': 99, '數(shù)學': 96, '英語': 66}}
從嵌套字典中獲取數(shù)據(jù):
score = stu_score_dict["周杰輪"]["語文"]
print(f"周杰輪的語文分數(shù)是:{score}")
# 結(jié)果:周杰輪的語文分數(shù)是:88
4.字典的常用操作
編號 | 操作 | 作用 |
1 | 字典[Key] | 獲取指定Key對應的Value值 |
2 | 字典[Key]= Value | 添加或更新鍵值對 |
3 | 字典.pop(Key) | 取出Key對應的Value并在字典內(nèi)刪除此Key的鍵值對 |
4 | 字典.clear() | 清空字典 |
5 | 字典.keys() | 獲取字典的全部Key,可用于for循環(huán)遍歷字典 |
6 | len(字典) | 計算字典內(nèi)的元素數(shù)量 |
(1)新增元素
語法:字典[Key] =Value,結(jié)果:字典被修改,新增了元素
my_dict1 = {"王力鴻": 88, "林俊節(jié)": 77}
# 新增,張學油的考試成績
my_dict1['張學油'] = 66
print(my_dict1)
# 結(jié)果:{'王力鴻': 88, '林俊節(jié)': 77, '張學油': 66}
(2)更新元素
語法:字典[Key]=Value,結(jié)果:字典被修改,元素被更新
注意: 字典Key不可以重復,所以對已存在的Key執(zhí)行上述操作,就是更新Value值
my_dict1 = {"王力鴻": 88, "林俊節(jié)": 77}
my_dict1['王力鴻'] = 66
print(my_dict1)
# 結(jié)果:{'王力鴻': 66, '林俊節(jié)': 77}
(3)刪除元素
語法: 字典.pop(Key),結(jié)果:獲得指定Key的Value,同時字典被修改,指定Key的數(shù)據(jù)被刪除
my_dict1 = {"王力鴻": 88, "林俊節(jié)": 77}
value = my_dict1.pop("王力鴻")
print(value) # 結(jié)果:88
print(my_dict1) # 結(jié)果:{'林俊節(jié)': 77}
(4)清空字典
語法:字典.clear(),結(jié)果:字典被修改,元素被清空
my_dict1 = {"王力鴻": 88, "林俊節(jié)": 77}
my_dict1.clear()
print(my_dict1)
# 結(jié)果:{}
(5)獲取字典的全部Key
語法:字典.keys(),可用于for循環(huán)遍歷字典
# 獲取全部的key
my_dict = {"周杰輪": 99, "王力鴻": 88, "林俊節(jié)": 77}
keys = my_dict.keys()
print(f"字典的全部keys是:{keys}") # 結(jié)果:字典的全部keys是:dict_keys(['周杰輪', '王力鴻', '林俊節(jié)'])
# 遍歷字典
# 方式一:通過獲取到全部的key來完成遍歷
for key in keys:
print(f"字典的key是:{key}")
print(f"字典的value是: {my_dict[key]}")
# 方式二:直接對字典進行for循環(huán),每一次循環(huán)都是直接得到key
for key in my_dict:
print(f"字典的key是:{key}")
print(f"字典的value是: {my_dict[key]}")
5.字典的特點
經(jīng)過上述對字典的學習,可以總結(jié)出字典有如下特點:
(1)可以容納多個數(shù)據(jù)
(2)可以容納不同類型的數(shù)據(jù)
(3)每一份數(shù)據(jù)是KeyValue鍵值對
(4)可以通過Key獲取到Value,Key不可重復 (重復會覆蓋)
(5)不支持下標索引
(6)可以修改(增加或刪除更新元素等)
(7)支持for循環(huán),不支持while循環(huán)
本次內(nèi)容就到此啦,歡迎評論區(qū)或者私信交流,覺得筆者寫的還可以,或者自己有些許收獲的,麻煩鐵汁們動動小手,給俺來個一鍵三連,萬分感謝 !??文章來源:http://www.zghlxwxcb.cn/news/detail-752536.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-752536.html
到了這里,關于【Python】一文帶你掌握數(shù)據(jù)容器之集合,字典的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!