Python學習總結之四 -- 這就是Python的字典

來源:互聯網
上載者:User

標籤:

字典原來是這麼回事兒

Python學習到現在,我們已經知道,如果想將值分組到結構中,並且通過編號對其進行引用,列表就可以派上用場。不過,今天,我們將學到一種通過名字引用值的資料結構,應該知道這種資料類型叫做映射。字典則是Python中唯一內建的映射類型,那麼我們就來學習字典。

認識字典

字典是可變的,並且可以儲存任意數量的Python對象。下面這個例子就是簡單的字典類型:

1 phonebook={‘zhangsan‘:‘12345‘,‘lisi‘:‘54321‘}2 print phonebook

 

 

字典由多個鍵及與其對應的值構成的對組成(我們也把鍵/值對稱為項)。字典中包括很多鍵,每一個鍵對應一個值。鍵在字典中是唯一的,但是值不是唯一的。在上例中,名字是鍵,電話號碼是值。每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典用大括弧括起來。空字典(不包含任何項)由兩個大括弧組成,像這樣:{}。

dict函數:我們可以調用dict函數對其他映射(比如其他字典)或者(鍵,值)這樣的序列或者關鍵字參數來建立字典。

1 item=[(‘name‘,‘BaiYiShaoNian‘),(‘age‘,‘23‘)]2 d=dict(item)3 print d

 


基本操作

len(d) : 返回字典d中項(鍵-值對)的數量

d[k] : 返回字典d中鍵k對應的值

d[k]=v :將值v關聯到字典d的鍵k上

del d[k] :刪除鍵k的項

k in d : 檢查鍵k是否存在於字典d中

 

1 d={‘name‘:‘BaiYiShaoNian‘,‘age‘:‘23‘,‘from‘:‘ChongQing‘,‘nowAdd‘:‘Jilin‘}2 print len(d)3 print d[‘name‘]4 d[‘name‘]=‘huangSir‘5 print d6 del d[‘age‘]7 print d8 print ‘from‘ in d 9 print ‘age‘ in d 

 

 

小結:在字典中檢查鍵的成員資格比在列表中檢查值的成員資格更加高效,資料規模越大,兩者的查詢效率差別就越大。

字典格式化字串:我在字串一篇中有講到字串的格式化方法,這裡,又出現字典格式化字串了。想想有什麼相同之處和不同之處呢,你是不是應該試著思考一下?(提示:字典是以映射的方式存在的)

1 d={‘name‘:‘BaiYiShaoNian‘,‘age‘:‘23‘,‘from‘:‘ChongQing‘}2 print ‘introduce yourself‘3 print ‘My name is %(name)s , I\‘m %(age)s years old , I\‘m from %(from)s .‘ % d 

 

字典方法

clear:清除字典中所有的項,無傳回值。(通過下面兩個例子感受clear方法的特點在哪裡)

 

copy:返回一個具有相同鍵-值對的新字典(淺複製)

deepcopy:深複製

 

 1 d={‘zhangsan‘:[‘789‘,‘123‘],‘lisi‘:‘12313‘} 2 d2=d.copy() 3 d[‘zhangsan‘].append(‘999‘) 4 print d 5 print d2 6  7 from copy import deepcopy 8 d={‘zhangsan‘:[‘789‘,‘123‘],‘lisi‘:‘12313‘} 9 d3=deepcopy(d)10 d[‘zhangsan‘].append(‘999‘)11 print d12 print d3

 

 

fromkeys:使用給定的鍵建立新的字典,每個鍵預設對應的值為None。

get:一個更寬鬆的訪問字典的方法。

一般來說,如果正常訪問字典中不存在的鍵的話會出錯,那麼使用get方法就不會報錯,它返回的是None。

has_key:檢查字典中是否含有給出的鍵。運算式d.has_key(k)相當於k in d。

itemsiteritems:items將字典項以列表的形式返回,iteritems和items作用相同,但是它返回的是一個迭代器對象而不是列表。

keysiterkeys:keys方法將字典中的鍵以列表形式返回,iterkeys方法將字典中的值以列表返回

pop:獲得對應於給定鍵的值,並將這個鍵-值對從字典中移除

valuesitervalues:和keys、iterkeys相對應,values方法以列表的形式返回字典中的值(itervalues傳回值的迭代器)

 

總結:目前為止,我們已經學習到了Python中字串、元組、列表、字典的基本知識了,接下來應該怎麼學呢?if 和 while語句嗎?我覺得這些迴圈語句可以在今後的Python例子中自然的就學到了。所以,接下來,我決定繼續學習Python的進階編程和爬蟲的知識了。

加油!BaiYiShaoNian。

Python學習總結之四 -- 這就是Python的字典

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.