07 - 元組、字典、集合📄目錄1 元組 tuple1.1 基本格式:tua = (元素1,元素2,元素3)1.2 元組與列表的區別:1.3 應用場景2 字典 dict2.1 基本格式:字典名 = {鍵名1:值1, 鍵名2:值2, ...}2.2 字典常見操作一2.2.1 查看元素2.2.2 修改元素2.2.3 添加元素2.2.4 刪除元素2.3 字典常見操作二2.3.1 len():求長度2.3.2 keys():返回字典裡面包含所有鍵名的列表2.3.3 values:返回字典裡面包含所有值的列表2.3.4 items:返回字典裡面包含所有鍵值對(元組形式)的列表2.4 字典的應用場景3 集合 set3.1 集合的基本格式:集合名 = {元素1, 元素2, ...}3.2 集合具有無序性3.2.1 集合無序的實現方式涉及hash(哈希)表3.3 集合具有唯一性3.4 集合的常見操作3.4.1 添加元素3.4.2 刪除元素4 交集和並集4.1 交集 &4.2 並集 |導航連結:
所有元素包含在小括號內,元素之間用逗號隔開,不同元素也可以是不同的數據類型

xxxxxxxxxxtua = (1, 2, 3, 4, 5)print(type(tua))tub = (1, ) # 只有一個元素的時候,末尾必須加上逗號,否則就會返回唯一值的數據類型print(type(tub))tuc = () # 定義空元組print(type(tuc))輸出結果:
xxxxxxxxxx<class 'tuple'><class 'tuple'><class 'tuple'>元組只有一個元素時,必須加逗號,列表沒有必要(否則會影響數據類型)
元組只支持查詢操作,不支持增刪改操作

xxxxxxxxxxtud = (1,2,3,4,1)print(tud[2]) # 元組也有下標,從左至右,從0開始# tua[2] = 'a' # 會報錯,因為不支持修改輸出結果:
xxxxxxxxxx3count()、index()、len()等跟列表的用法相同

xxxxxxxxxxtud = (1,2,3,4,1)print(tud.index(2))print(tud.count(1))print(len(tud))print(tud[1:])輸出結果:
xxxxxxxxxx125(2, 3, 4, 1)函數的參數和返回值
格式化輸出後面的()本質上就是一個元組

xxxxxxxxxxname = 'Victoria'age = 18print('%s的年齡是:%d' % (name, age))info = (name, age)print('%s的年齡是:%d' % info)# 數據不可以被修改的時候,能夠保據數據安全輸出結果:
xxxxxxxxxxVictoria的年齡是:18Victoria的年齡是:18鍵值對形式保存,鍵(key)和值(value)之間用冒號隔開,每個鍵值對之間用逗號隔開

xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}print(type(dic1))輸出結果:
xxxxxxxxxx<class 'dict'>
字典中的鍵具備唯一性,但是值可以重複
xdic2 = {'name': 'Ben', 'name': 'Dennis'} # 不會報錯,鍵名重複的話前面的值會被後面的值覆蓋print(dic2)dic3 = {'name': 'Ben', 'name2': 'Ben'}print(dic3)
輸出結果:
xxxxxxxxxx{'name': 'Dennis'}{'name': 'Ben', 'name2': 'Ben'}
基本格式:變量名[鍵名]
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}# print(dic1[1]) # 不可以根據下標,字典中沒有下標,查找元素需要根據鍵名,鍵名相當於下標print(dic1['name'])# print(dic1['sex']) # 報錯,鍵名不存在輸出結果:
xxxxxxxxxxVictoria
基本格式:變量名.get(鍵名)
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}print(dic1.get('name'))print(dic1.get('tel')) # 鍵名不存在,會返回Noneprint(dic1.get('name2', '不存在')) # 如果鍵名不存在,返回自己設定的默認值輸出結果:
xxxxxxxxxxVictoriaNone不存在
基本格式:變量名[鍵名] = 值
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}dic1['age'] = 20 # 列表通過下標修改,字典通過鍵名修改print(dic1)輸出結果:
xxxxxxxxxx{'name': 'Victoria', 'age': 20}
基本格式:變量名[鍵名] = 值
💡 鍵名存在就是修改,不存在就是新增
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}dic1['sex'] = 'M' # 鍵名存在就是修改,不存在就是新增print(dic1)dic1['sex'] = 'F'print(dic1)dic1['height'] = '163'print(dic1)輸出結果:
xxxxxxxxxx{'name': 'Victoria', 'age': 18, 'sex': 'M'}{'name': 'Victoria', 'age': 18, 'sex': 'F'}{'name': 'Victoria', 'age': 18, 'sex': 'F', 'height': '163'}
del:刪除整個字典/指定的元素
刪除整個字典:del 字典名
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}del dic1print(dic1) # 報錯,dic1已經不存在
clear:清空整個字典(含鍵名),但保留了這個字典
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}dic1.clear()print(dic1)輸出結果:
xxxxxxxxxx{}
刪除指定鍵值對,鍵名不存在就會報錯
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}del dic1['age']print(dic1)# del dic1['age'] # 已經沒有鍵名,因此會報錯輸出結果:
xxxxxxxxxx{'name': 'Victoria'}
pop:刪除指定鍵值對,鍵不存在就會報錯
xxxxxxxxxxdic1 = {'name': 'Victoria', 'age': 18}dic1.pop('age')print(dic1)# dic1.pop('age') # 報錯,不存在鍵名# dic1.pop() # 報錯,沒有指定鍵名# dic1.popitem() # 3.7之前版本是隨機刪除一個鍵值對,之後是默認刪除最後一個鍵值對輸出結果:
xxxxxxxxxx{'name': 'Victoria'}
xxxxxxxxxxdic4 = {'name': 'Victoria', 'age': 18, 'sex': 'F', 'height': '163', 'tel': '62345'}print(len(dic4)) # 返回5,因為字典中有5個鍵值對輸出結果:
xxxxxxxxxx5💡 列表(返回元素數量)、字符串(返回字符串長度)等也可以求長度

xxxxxxxxxxdic4 = {'name': 'Victoria', 'age': 18, 'sex': 'F', 'height': '163', 'tel': '62345'}print(dic4.keys())# for循環取出鍵名for i in dic4.keys(): # 只取出鍵名 print(i)# for i in dic4():也是取出鍵名輸出結果:
xxxxxxxxxxdict_keys(['name', 'age', 'sex', 'height', 'tel'])nameagesexheighttel💡 列表(返回元素數量)、字符串(返回字符串長度)等也可以求長度

xxxxxxxxxxdic4 = {'name': 'Victoria', 'age': 18, 'sex': 'F', 'height': '163', 'tel': '62345'}print(dic4.values())for i in dic4.values(): print(i)輸出結果:
xxxxxxxxxxdict_values(['Victoria', 18, 'F', '163', '62345'])Victoria18F16362345
xxxxxxxxxxdic4 = {'name': 'Victoria', 'age': 18, 'sex': 'F', 'height': '163', 'tel': '62345'}print(dic4.items())for i in dic4.items(): print(i, type(i)) # i是元組類型輸出結果:
xxxxxxxxxxdict_items([('name', 'Victoria'), ('age', 18), ('sex', 'F'), ('height', '163'), ('tel', '62345')])('name', 'Victoria') <class 'tuple'>('age', 18) <class 'tuple'>('sex', 'F') <class 'tuple'>('height', '163') <class 'tuple'>('tel', '62345') <class 'tuple'>可以使用鍵值對,存儲描述一個物體的相關信息

xxxxxxxxxxs1 = {1, 2, 3}print(s1, type(s1))s2 = {} # 定義空字典print(s2, type(s2))s3 = set() # 定義空集合print(s3, type(s3))輸出結果:
xxxxxxxxxx{1, 2, 3} <class 'set'>{} <class 'dict'>set() <class 'set'>
xxxxxxxxxxs1 = {'a','b','c','d','e','f','g','h'}print(s1) # 每次運行結果都不一樣s2 = {1,2,3,4,5,6}print(s2) # 數字集合運行結果一樣輸出結果:
xxxxxxxxxx{'b', 'c', 'e', 'd', 'a', 'g', 'h', 'f'}{1, 2, 3, 4, 5, 6}
xxxxxxxxxxprint(hash('a'))print(hash('b'))print(hash('c'))# 每次運行結果都不同,hash值不同,那麼在hash表中的位置也不同,這就實現了集合的無序性print(hash(1))print(hash(2))print(hash(3))# python中int類型的hash值就是它本身,在hash表中的位置不會發生變化,所以順序也不會發生改變print(hash('1'))print(hash('2'))print(hash('3'))# 因為用引號括起來,int就變成字符串類型,hash值會發生改變❗ 無序性:不能修改集合中的值
可以通過唯一性自動去重

xxxxxxxxxxs1 = {1,2,5,3,2,6,4,3}print(s1) # 返回{1, 2, 3, 4, 5, 6}輸出結果:
xxxxxxxxxx{1, 2, 3, 4, 5, 6}
add:添加的是一個整體
xxxxxxxxxxs2 = {1,2,3,4}print('原集合:',s2)s2.add(5)print('現集合:',s2)# 集合的唯一性,決定了如果需要添加的元素在原集合中已經存在,就不進行任何操作s2 = {1,2,3,4}print(s2)s2.add(1) # 不進行操作print(s2)s2.add((5,6)) # 整體加入print(s2)輸出結果:
xxxxxxxxxx原集合: {1, 2, 3, 4}現集合: {1, 2, 3, 4, 5}{1, 2, 3, 4}{1, 2, 3, 4}{1, 2, 3, 4, (5, 6)}
update:把傳入的元素拆分,一個個放進集合中
xxxxxxxxxxs3 = {1,2,3,4,5}print('原集合:',s3)s3.update([5,6,7]) # update內必須是能被for循環取值的可迭代對象,如字符串、列表等等。整型就不行s3.update((8,9,10))print('現集合:',s3)輸出結果:
xxxxxxxxxx原集合: {1, 2, 3, 4, 5}現集合: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
remove:選擇刪除的元素,如果集合中有就刪除,沒有就報錯
xxxxxxxxxxs4 = {1,2,3,4,5}s4.remove(5)# s4.remove(6) #報錯print('刪除後:',s4)輸出結果:
xxxxxxxxxx刪除後: {1, 2, 3, 4}
pop
xxxxxxxxxxs4 = {1,2,3,4,5}print('原集合:',s4)s4.pop() # 集合內為int類型就是刪除第一個元素,不是int類型的話就是hash表排序後的第一個元素print('刪除後:',s4)輸出結果:
xxxxxxxxxx原集合: {1, 2, 3, 4, 5}刪除後: {2, 3, 4, 5}
discard:選擇要刪除的元素,有就刪除,沒有就不會進行任何操作
xxxxxxxxxxs4 = {1,2,3,4,5}print('原集合:',s4)s4.discard(2)print('刪除後:',s4)s4.discard(7)print('再刪除後:',s4)輸出結果:
xxxxxxxxxx原集合: {1, 2, 3, 4, 5}刪除後: {1, 3, 4, 5}再刪除後: {1, 3, 4, 5}&
含義:共有的部分
xxxxxxxxxxa = {1,2,3,4,5}b = {3,4,5,6}print(a & b)c = {6,7,8}print(a & c) # 返回set(),即空集合s1 = {'a','b','c','d'}s2 = {'c','d','e'}print(s1 & s2)輸出結果:
xxxxxxxxxx{3, 4, 5}set(){'c', 'd'}|
含義:所有的都放一起,重複的不算(集合的唯一性)
xxxxxxxxxxa = {1,2,3}b = {3,4,5}print(a | b)l = a | bprint(type(l))輸出結果:
xxxxxxxxxx{1, 2, 3, 4, 5}<class 'set'>| 目的地 | 超連結 |
|---|---|
| 首頁 | 返回主頁 |
| Python學習 | Python學習 |
| 上一篇 | 06 - 字符串&列表 |
| 下一篇 | 08 - 類型轉換&深淺拷貝 |