1. 程式人生 > >Python學習筆記(3)

Python學習筆記(3)

python

重要的數據類型Dict和Set
dict通過key 查找value(key和value關聯)
花括號{ }表示這是一個dict,然後按照key:value,寫出來即可。最後一個key:value的都好可以省略
技術分享圖片

註意: 單元素的tuple必須在後面多家加一個逗號
dict最後的逗號可以省略
由於dict也是集合,len()函數可以計算任意集合的大小

>>len(d)
3 註意:一個key-value算一個,因此,dict大小為3
訪問dict
可以簡單的使用d[key] 的形式來查找對應的value,這和list很像,不同之處是,list必須使用索引返回對應的元素,而dict直接使用key(通過key訪問dict的value,只要key存在,dict就返回對應的value,如果key不存在,會直接報錯:keyerror)

技術分享圖片
Dict 的特點:
知識點:dict查找速度快。List查找速度隨著元素增加而逐漸下降。
缺點:內存占用大。list慢但內存占用小
dict的第一特點是查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降
不過dict的查找速度快不是沒有代價的,dict的缺點是占用內存大,還會浪費很多內容,而list正相反,占用內存小,但是查找速度慢
Dict的第二個特點是存儲的key-value序對視沒有順序的!這和list不同(dict是按key查找的,所以在一個dict中,key不能重復)
例如:
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
>>print d
{‘Lisa’:85,’Adam’:95,’Bart’:59}
打印的順序不一定是我們創建時的順序,而且不同的機器打印的順序都可能不同,這說明:dict內部是無序的,不能用dict 存儲有序的集合
dict的第三個特點是作為key的元素倪新雨不可變,python的基本類型如字符串、整數、浮點數都是不可變的,都可以作為key。但是list是可變的,就不能作為key
不可變這個限制僅作用於key,value是否可變無所謂
技術分享圖片
更新dict
Dict是可變的,即我們可以隨時王dict 中添加新的key-value.例如:
>>d[‘Paul’]=72
>>print d
{‘Lisa’:85,’Paul’:72,’Adam’:95,’Bart’:59}
如果key已經存在,則復制會用心的value替換原來的value
>>d[‘Bart’]=60
>>print d
{‘Lisa’:85,’Paul’:72,’Adam’:95,’Bart’:60}
遍歷dict
由於dict也是一個集合,所以遍歷dict和遍歷list類似,都可以通過for循環實現
直接使用for循環可以便利dict的key
>>d={‘Lisa’:85,’Adam’:95,’Bart’:59}
>>for key in d:
… print key

Adam
Lisa
Bart
由於通過key可以獲取對應的value,因此,在循環體內,可以獲取到value的值
d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
for key in d:
print key+”:”,d[key]
運行結果:
Lisa: 85
Adma: 95
Bart: 59

Set
Dict的作用是建立一組key和一組value的映射關系,dict的key是不能重復的
Set持有一系列元素,這一點和list很像,但是set的元素沒有重復,而且是無序的,這點和dict的key很像
創建set的方式是調用set()並傳入一個list,list的元素將作為set的元素

>>s=set([‘A’ , ’B’ , ’C’])
>>print s
Set([‘A’ ,’C’,’B’ ])
註意:可以看出打印的順序與原始的list順序有可能不同,因為set內部存儲的元素是無序的
>>s=set([‘A’ , ’B’ , ’C’ , ‘C’])
>>print s
Set([‘A’ ,’C’,’B’ ])
>>len(s)
3
結果顯示:因為set不能包含重復的元素,所以set會自動去掉重復的元素,原來的list有4個元素,但是set只有3個
編程任務:請用set表示班裏的4位同學:Adma,Lisa,Bart,Paul
>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
print s
運行結果:
set([‘Lisa’,’Paul’,’Adma’,’Bart’])

訪問set
由於set存儲的是無序集合,所以我們沒法通過索引來訪問,訪問Set中的某個元素實際上就是判斷一個元素是否在set中,可以用in操作符判斷

>>s=set([‘Adma’,’Lisa’,’Bart’,’Paul’])
>>’Bart’ in s
True
>>’Bill’ in s
False
>>’bart’ in s
False
註意:大小寫(區分大小寫)
Set的特點:
Set的內部結構和dict很像,唯一區別是不存儲value,因此,判斷一個元素是否在set中速度很快,Set存儲的元素和dict的key類似,必須是不變對象,因此,任何可變對象是不能放入set中的。最後,set存儲的元素也是沒有順序的
例如:判斷用戶輸入是否是一個有效的星期?
Weekdays=set([‘Mon’,’Tue’,’Wed’,’Thu’,’Fri’,’Sat’,’Sun’])
X=’???’ #用戶輸入的字符串
if X in weekdays:
print ‘input ok’
else
print ‘input error’

遍歷set
由於set也是一個集合,所以,遍歷set和遍歷list類似,都可以通過for循環實現

>>s=set([‘Adma’,’Lisa’,’Bart’])
>>for name in s:
… Print name

Lisa
Adma
Bart
註意:for循環在遍歷set是,元素的順序和list的順序很可能不同
技術分享圖片
更新set(add ,remove)
由於set存儲的是一組不重復的無序元素,因此,更新set主要做兩件事:
。是把新的元素添加到set中
。是把已有元素從set中刪除(前提是元素存在)

技術分享圖片
技術分享圖片
所以用add()可以直接添加,而remove()前需要判斷

Python學習筆記(3)