1. 程式人生 > 實用技巧 >元組,字典,集合

元組,字典,集合

1.元組

    作用:存多個值,對比列表來說,元組不可變(是可以當做字典的key的),主要是用來讀
    定義:與列表型別比,只不過[]換成()
    age=(11,22,33,44,55)本質age=tuple((11,22,33,44,55))

    1.優先掌握的操作:
        1、按索引取值(正向取+反向取):只能取   
        2、切片(顧頭不顧尾,步長)
        3、長度
        4、成員運算in和not in
        5、迴圈
        
2.字典
    作用:存多個值,key-value存取,取值速度快
    定義:key必須是不可變型別,value可以是任意型別
        info
={'name':'egon','age':18,'sex':'male'} #本質info=dict({....}) info=dict(name='egon',age=18,sex='male') info=dict([['name','egon'],('age',18)]) {}.fromkeys(('name','age','sex'),None) 1.優先掌握的操作: 1、按key存取值:可存可取 2、長度len 3、成員運算in和not in 4、刪除
5、鍵keys(),值values(),鍵值對items() 6、迴圈 案例: 1.有[11,22,33,44,55,66,77,88,99,90...],將所有大於 66 的值儲存至字典的第一個key中, 將小於 66 的值儲存至第二個key的值中; 比如:{'k1': 大於66的所有值, 'k2': 小於66的所有值} a={'k1':[],'k2':[]} c=[11,22,33,44,55,66,77,88,99,90]
for i in c: if i>66: a['k1'].append(i) else: a['k2'].append(i) print(a) 2.統計s='hello alex alex say hello sb sb'中每個單詞的個數 s='hello alex alex say hello sb sb' l=s.split() dic={} for item in l: if item in dic: dic[item]+=1 else: dic[item]=1 print(dic) setdefault的功能 1:key存在,則不賦值,key不存在則設定預設值 2:key存在,返回的是key對應的已有的值,key不存在,返回的則是要設定的預設值 d={} print(d.setdefault('a',1)) #返回1 d={'a':2222} print(d.setdefault('a',1)) #返回2222 s='hello alex alex say hello sb sb' dic={} words=s.split() for word in words: #word='alex' dic.setdefault(word,s.count print(dic) #利用集合,去掉重複,減少迴圈次數 s='hello alex alex say hello sb sb' dic={} words=s.split() words_set=set(words) for word in words_set: dic[word]=s.count(word) print(dic) 3.集合 作用:去重,關係運算, 定義集合: 集合:可以包含多個元素,用逗號分割, 集合的元素遵循三個原則: 1:每個元素必須是不可變型別(可hash,可作為字典的key) 2:沒有重複的元素 3:無序 注意:集合的目的是將不同的值存放到一起,不同的集合間用來做關係運算,無需糾結於集合中單個值 常用方法: 1、長度len 2、成員運算in和not in 3、|合集 4、&交集 5、-差集 6、^對稱差集 7、== 8、父集:>,>= 9、子集:<,<= 案例: 1.有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合    pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}    linuxs={'wupeiqi','oldboy','gangdan'}   1. 求出即報名python又報名linux課程的學員名字集合 print(pythons & linuxs)   2. 求出所有報名的學生名字集合 print(pythons | linuxs)   3. 求出只報名python課程的學員名字 print(pythons - linuxs)   4. 求出沒有同時這兩門課程的學員名字集合 print(pythons ^ linuxs) 2.去重 #列表中元素為可變型別時,去重,並且保持原來順 l=['a','b',1,'a','a'] print(set(l)) l1=[] for i in l: if i not in l1: l1.append(i) print(l1) l=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'egon','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ] # print(set(l)) #報錯:unhashable type: 'dict' s=set() l1=[] for item in l: val=(item['name'],item['age'],item['sex']) if val not in s: s.add(val) l1.append(item) print(l1)