Python--關於dict,Python--dict

來源:互聯網
上載者:User

Python--關於dict,Python--dict

本文內容摘錄自慕課網《Python 入門》

 

1、dict 特性

dict用花括弧{}表示,然後按照 key: value, 寫出來即可。最後一個 key: value 的逗號可以省略。

①、dict 的尋找速度快,無論dict有10個元素還是10萬個元素,尋找速度都一樣。而list的尋找速度隨著元素增加而逐漸下降。

       dict的缺點是佔用記憶體大,還會浪費很多內容,list正好相反,佔用記憶體小,但是尋找速度慢

②、dict 通過key 來尋找 value ,因此key 不能重複,而value可重複

③、dict儲存的"key:value"是無序的,即不可用索引號切片等。

Python的基本類型如字串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。

用 dict 表示“名字”-“成績”的尋找表如下:

 d = {
 'Adam': 95, #key : value
 'Lisa': 85,
 'Bart': 59
 }

我們把名字稱為key,對應的成績稱為value,dict就是通過 key 來尋找 value。

2、訪問 dict

建立一個dict,用於表示名字和成績的對應關係:

 d = {
 'Adam': 95,
 'Lisa': 85,
 'Bart': 59
 }

使用 d[key] 的形式來尋找對應的 value,這和 list 很像,不同之處是,list 必須使用索引返回對應的元素,而dict使用key:

 23:30:12

注意: 通過 key 訪問 dict 的value,只要 key 存在,dict就返回對應的value。如果key不存在,會直接報錯:KeyError。

要避免 KeyError 發生,有兩個辦法:

一是先判斷一下 key 是否存在,用 in 操作符:

 if 'Paul' in d:
 print d['Paul']

如果 'Paul' 不存在,if語句判斷為False,自然不會執行 print d['Paul'] ,從而避免了錯誤。

二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:

 >>> print d.get('Bart')
 59
 >>> print d.get('Paul')
 None
 3、更新 dict 
 
dict是可變的,可以隨時往dict中添加新的 key-value。比如已有dict:
 d = {
 'Adam': 95,
 'Lisa': 85,
 'Bart': 59
 }

要把新同學'Paul'的成績 72 加進去,用指派陳述式:
 >>> d['Paul'] = 72 

再看看dict的內容:
 >>> 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}
 4、遍曆/迭代 dict 
 Ⅰ、for迴圈遍曆:由於dict也是一個集合,所以,遍曆dict和遍曆list類似,都可以通過 for 迴圈實現。 
 >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
 print key,'-',d[key]
 Lisa - 85
Adam - 95
Bart - 59
Ⅱ、values() / itervalues() 方法:返回dict 的value值 
 values()方法:把 dict 轉換成了包含 value 的list 
 >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.values()
[85, 95, 59]
>>> for v in d.values():
 print v
 85
95
59
 用 itervalues() 方法替代 values() 方法,迭代效果完全一樣。而 itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了產生 list 所需的記憶體。 
 Ⅲ、items() / iteritems() 方法:返回dict 的key和value 
 
dict 對象的 items() 方法返回的值:
 >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> print d.items() [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

可以看到,items() 方法把dict對象轉換成了包含tuple的list,對這個list進行迭代,可以同時獲得key和value:
 >>> for key, value in d.items(): ... print key, ':', value ... Lisa : 85 Adam : 95 Bart : 59

和 values() 有一個 itervalues() 類似, items() 也有一個對應的 iteritems(),iteritems() 不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不佔用額外的記憶體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.