iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 9
0
Software Development

從0開始學習程式-Python系列 第 10

[Day13] Really!? 你不知道什麼是字典?


不知道大家昨天晚上有吃飽嗎?還是今天早上已經在烙賽呢?
今天我們來學個輕鬆的變數吧!

Dictionary到底是啥?


可以想像就是一本字典,跟在國小學習用字典感覺差不多,先找到你要找的單字後,可以看到單字有解釋和範例。在Python裡面dictionary(接著我們稱dict)有類似的概念,單字就是key,而解釋和範例就是value。因此,在dict中是由一組key:value組成,並放在大括號{}中間。而在python裡面的dict和C語言的Hash Table非常類似。

基本操作

接下來我們用下面這一組範例來講解dict

score={'Monica':70,'Rachel':75,'Joey':80,'Ross':59,'Phoebe':60,'Chandler':85}

  1. lan(dict):查看dict
    dict[key]:查看dict中,key所對應的value
    dict.get(key, default=None):查看dict中,key所對應的value,與dict[key]不同在於,若key不存在時,會回傳None
print(len(score)) #output:6
print(score['Rachel']) #output:75
print(score.get('Ross')) #output:59
print(score.get('Eason')) #output:None
  1. .keys():查看dict中的所有keys
    .values():查看dict中的所有values,原則上輸出順序會剛好對應.keys()所輸出的順序
    .items():查看dict中所有keys和values,並呈現出每一項的(key,value)
print(score.keys()) 
#output:dict_keys(['Monica', 'Rachel', 'Joey', 'Ross', 'Phoebe', 'Chandler'])
print(score.values()) 
#output:dict_values([70, 75, 80, 59, 60, 85])
print(score.items()) 
#output:dict_items([('Monica', 70), ('Rachel', 75), ('Joey', 80), ('Ross', 59), ('Phoebe', 60), ('Chandler', 85)])
  1. 新增:直接給一個key並指定一個value
    修改:直接找出你要修改的key直接指定一個新value
    del(dict[key]):指定刪除某一項及其對應值
    dict.pop(key)):指定刪除某一項及其對應值,只是pop可以回傳這個key所對應的value
score['Janice']=59 #直接新增,giving a key and assigning a valuse
score['Monica']=65 #直接針對那個key,然後指定一個新的valuse
#output:dict_items([('Monica', 65), ('Rachel', 75), ('Joey', 80), ('Ross', 59), ('Phoebe', 60), ('Chandler', 85), ('Janice', 59)])

del(score['Janice'])
print(score)
#output:{'Monica': 65, 'Rachel': 75, 'Joey': 80, 'Ross': 59, 'Phoebe': 60, 'Chandler': 85}

remove=score.pop('Ross')
print(remove)
#output:59

print(score)
#output:{'Monica': 65, 'Rachel': 75, 'Joey': 80, 'Phoebe': 60, 'Chandler': 85}

list & dict

  1. list的index是有序的數列,起於0。而dict的key不用是有序,而且也不用是數字,可以是字串。
  2. python中list在查找某的index時,時間複雜度是O(n),而dict查找是利用類似hash table方式,所以在最佳的狀況下,時間複雜度是O(1)。

set

跟dict最大的差異在set沒有keys。

好啦~今天也到這裡就好,快樂星期六
快抓住假日的尾巴吧!多吃柚子吧!


上一篇
[Day12] 從烤網看串列
下一篇
[Day14]當我們集在一起
系列文
從0開始學習程式-Python32

尚未有邦友留言

立即登入留言