天天看點

字典和鍵值對換輸出_建議收藏丨純知識點:Python基礎—字典、集合操作大全1.字典— 增2. 字典—— 删3. 字典—— 改 4. 字典——查5. 字典的嵌套應用執行個體:四、集合基本操作1. 集合——增 2. 集合——删 3.集合不能改4. 集合——查5. 集合之間的操作五、公共方法排序補充:count() 數元素出現的次數len() 計算清單的長度li.index('元素') 檢視索引六. 差別與異同

本文為純知識點,預計需閱讀二十分鐘

資料結構基本上就是——它們是可以處理一些 資料 的 結構 。或者說,它們是用來存儲一組相關資料的。

在Python中有四種内建的資料結構——清單、元組和字典,集合。我們将會學習如何使用它們,以及它們如何使程式設計變得簡單,上一篇我們學完了清單和元組,今天來學習字典和集合

字典類似于你通過聯系人名字查找位址和聯系人詳細情況的位址簿,即,我們把鍵(名字)和值(詳細情況)聯系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正确的資訊。

注意,你隻能使用不可變的對象(比如字元串)來作為字典的鍵,但是你可以把不可變或可變的對象作為字典的值。

基本說來就是,你應該隻使用簡單的對象作為鍵。

鍵值對在字典中以這樣的方式标記:d = {key1 : value1, key2 : value2 }。

注意它們的鍵/值對用冒号分割,而各個對用逗号分割,所有這些都包括在花括号中

dict

key(鍵)必須是不可變資料類型,可哈希

value(值)任意資料類型

dict 優點:二分查找去查詢

    存儲大量的關系型資料

特點:<=3.5版本無序,3.6以後都是有序

1.字典— 增

dic['鍵'] = 值

dic1 = {'age':18,'name':'xc','sex':'female'}dic1['height'] = 165print(dic1) # 沒有鍵值對,增加# {'age': 18, 'name': 'xc', 'sex': 'female', 'height': 165}dic1['age'] = 21print(dic1) #有鍵值對,則修改#{'age': 21, 'name': 'xc', 'sex': 'female', 'height': 165}
           

setdefault 設定預設

# dic1 = {'age':18,'name':'xc','sex':'female'}dic1.setdefault('weight',120)print(dic1)     # 沒有鍵值對,增加# {'age': 18, 'name': 'xc', 'sex': 'female', 'weight': 120}dic1.setdefault('name','aa')print(dic1)      #有鍵值對,不做任何操作# {'age': 18, 'name': 'xc', 'sex': 'female', 'weight': 120}
           

2. 字典—— 删

删除優先使用pop(有傳回值,要删除的内容不存在時不報錯),而不是del

pop 删除

dic1 = {'age':18,'name':'xc','sex':'female'}print(dic1.pop('age'))  #有age直接删除---有傳回值,按鍵删除print(dic1)     #18   {'name': 'xc', 'sex': 'female'}print(dic1.pop('erge','沒有此鍵/None'))  #沒有erge----可設定傳回值:沒有此鍵/None print(dic1)     #沒有此鍵/None    {'name': 'xc', 'sex': 'female'}
           

popitem 随機删除

dic1 = {'age':18,'name':'xc','sex':'female'}print(dic1.popitem())  #('sex', 'female')#随機删除:有傳回值-----傳回元祖:删除的鍵值
           

clear 清空

dic1 = {'age':18,'name':'xc','sex':'female'}dic1.clear()    #清空字典print(dic1)     #{}
           

del 删除

dic1 = {'age':18,'name':'xc','sex':'female'}del dic1['name']   # 有,則删除# del dic1['name1']  #沒有,則報錯print(dic1)     #{'age': 18, 'sex': 'female'}
           

3. 字典—— 改

update

dic = {'age':18,'name':'xc','sex':'female'}dic2 = {'name':'alex','weight':'168'}dic2.update(dic)      #有則更新覆寫,沒有則增加​print(dic)  #{'age': 18, 'name': 'xc', 'sex': 'female'}​print(dic2) #{'name': 'xc', 'weight': '168', 'age': 18, 'sex': 'female'}
           

4. 字典——查

keys,values,items

dic1 = {'age':18,'name':'xc','sex':'female'}print(dic1.keys(),type(dic1.keys()))    #鍵 dict_keys(['age', 'name', 'sex']) print(dic1.values())    #值 dict_values([18, 'xc', 'female'])print(dic1.items())     #元祖 dict_items([('age', 18), ('name', 'xc'), ('sex', 'female')])
           

得到鍵值,首選get

print(dic1['name'])      #有則列印#print(dic1['name1'])    #沒有則報錯print(dic1.get('name'))  #有name直接輸出---有傳回值print(dic1.get('name1','沒有此鍵'))  #沒有name1----可設定傳回值:沒有此鍵/None
           

循環輸出

for i in dic1:    print(i)    #循環列印鍵(預設為鍵)    for i in dic1.keys():    print(i)    #循環列印鍵    for i in dic1.values():    print(i)    #循環列印值    for i in dic1.items():    print(i)    #循環列印鍵值對for k,v in dic1.items():    print(k,v)    #列印鍵和值
           

5. 字典的嵌套

dic = {    'name':['alex','wusir','xinchen'],    'py9':{        'time':'1213',        'study_fee':19800,        'addr':'CBD',    },    'age':21}
           
dic['age'] = 56 # 找到age,再更新為56print(dic)dic['name'].append('rt')    #找到name,在添加名字print(dic)dic['name'][1] = dic['name'][1].upper() #找到name,再把wusir變為大寫print(dic)dic['py9']['female'] = 6    #找到元祖,增加鍵值對female:6print(dic)
           

應用執行個體:

#輸入一串字元,遇到字母,轉換為‘_’,并列印輸出

info = input('請輸入:')for i in info:    if i.isalpha():        info = info.replace(i,'_')print(info)
           

四、集合

集合 類似于清單,但每個元素都必須是獨一無二且不可變的:

它是無序的

基本操作

print(set1)     #{1, 2, 3}set2 = {1,2,3,[2,3],{'name':'xc'}}  #清單是可變的(不可哈希),是以出錯print(set2)     #TypeError: unhashable type: 'list'
           

1. 集合——增

add

set1 = {'alex','wusir','ritian','egon','barry'}# (1)add    #因為集合是無序的,是以每次運作結果不一定一樣,增加的位置也不一定一樣set1.add('nvshen')  #{'ritian', 'nvshen', 'egon', 'wusir', 'alex', 'barry'}print(set1)
           

update

set1.update('xc')   #疊代添加,依然是無序的print(set1) #{'egon', 'x', 'wusir', 'nvshen', 'c', 'alex', 'ritian', 'barry'}
           

2. 集合——删

set1 = {'alex','wusir','ritian','egon','barry'}
           

pop--随機删除

print(set1.pop())   #egon:有傳回值,傳回本次删除的内容print(set1)     #{'barry', 'alex', 'wusir', 'ritian'}
           

remove——指定元素删除

set1.remove('alex')print(set1)     #{'egon', 'wusir', 'barry', 'ritian'}
           

clear——清空

set1.clear()print(set1)     #空集合:set()
           

del

del set1        #删除之後集合不存在,報錯print(set1)     #NameError: name 'set1' is not defined
           

3.集合不能改

集合是無序;

集合中的元素是不可變資料類型

4. 集合——查

set1 = {'alex','wusir','ritian','egon','barry'}for i in set1:    print(i)
           

5. 集合之間的操作

set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}
           

交集

print(set1 & set2)      #(1) {4, 5}print(set1.intersection(set2))      #(2) {4, 5}
           

并集

print(set1 | set2)          #(1) {1, 2, 3, 4, 5, 6, 7, 8}print(set1.union(set2))     #(2) {1, 2, 3, 4, 5, 6, 7, 8} 
           

交集--除交集以外的其他元素

print(set1 ^ set2)          #(1) {1, 2, 3, 6, 7, 8}print(set1.symmetric_difference(set2))     #(2) {1, 2, 3, 6, 7, 8}
           

差集--前者獨有的

print(set1 - set2)              #(1) {1, 2, 3}print(set1.difference(set2))     #(2) {1, 2, 3}print(set2 - set1)              #(1) {8, 6, 7}print(set2.difference(set1))     #(2) {8, 6, 7}
           

子集與超集

set3 = {1,2,3,4,5}set4 = {1,2,3,4,5,6,7,8}print('------ set3是set4的子集 ------')print(set3 < set4)      #Trueprint(set3.issubset(set4))   #Trueprint('------ set4是set3的超集 ------')print(set4 > set3)      #Trueprint(set4.issuperset(set3))   #True
           

五、公共方法

排序

正向排序:sort()

li = [1,5,4,2,6,7,3]li.sort()print(li)   #[1, 2, 3, 4, 5, 6, 7]
           

倒序排序:li.sort(reverse = True)

li = [1,5,4,2,6,7,3]li.sort(reverse = True)print(li)   #[7, 6, 5, 4, 3, 2, 1]
           

反轉:li.reverse()

li = [1,5,4,2,6,7,3]li.reverse()print(li)     #[3, 7, 6, 2, 4, 5, 1]
           

補充:

字元串清單排序——根據字元串的第一個字元對應的ASCII碼排序

li = ['ojhy','asa','cvd','hdk']li.sort()print(li)   #['asa', 'cvd', 'hdk', 'ojhy']
           

count() 數元素出現的次數

li = ['xcsd', 'cdc', '木木',[1, 5, 2], 'eht', '木木']num = li.count('木木')print(num)  #2:'木木'出現2次
           

len() 計算清單的長度

li = ['xcsd', 'cdc', '木木',[1, 5, 2], 'eht', '木木']l = len(li)print(l)   #6:清單長度為6
           

li.index('元素') 檢視索引

li = ['xcsd', 'cdc', '辛辰',[1, 5, 2], 'eht', '辛辰']print(li.index('eht'))  #4:'eht'的索引為4元祖
           

六. 差別與異同

字典和鍵值對換輸出_建議收藏丨純知識點:Python基礎—字典、集合操作大全1.字典— 增2. 字典—— 删3. 字典—— 改 4. 字典——查5. 字典的嵌套應用執行個體:四、集合基本操作1. 集合——增 2. 集合——删 3.集合不能改4. 集合——查5. 集合之間的操作五、公共方法排序補充:count() 數元素出現的次數len() 計算清單的長度li.index('元素') 檢視索引六. 差別與異同

最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、資料分析、資料可視化、機器學習等。想要這些資料的可以關注小編,并在背景私信小編:“01”即可領取。