Python中字典的基礎知識歸納小結

來源:互聯網
上載者:User
定義一個字典

>>> d = {"server":"mpilgrim", "database":"master"} 1>>> d{'server': 'mpilgrim', 'database': 'master'}>>> d["server"]         2'mpilgrim'>>> d["database"]         3'master'>>> d["mpilgrim"]         4

Traceback (innermost last):
File "", line 1, in ?
KeyError: mpilgrim

首先,我們建立了一個擁有兩個元素的新字典,並將其賦值給變數 d。每一個元素都是一個鍵-值對,整個元素集合用大括弧括起來。
server 是一個鍵字,它所關聯的值為 mpilgrim,用 d["server"] 來引用。
database 是一個鍵字,它所關聯的值為 master,用 d["database"] 來引用。

你可以通過鍵字來得到值,但是不能通過值得到鍵字。所以 d["server"] 為 mpilgrim,但是使用 d["mpilgrim"] 會引發一個異常,因為 mpilgrim 不是一個鍵字。

修改一個字典

>>> d{'server': 'mpilgrim', 'database': 'master'}>>> d["database"] = "pubs" 1>>> d{'server': 'mpilgrim', 'database': 'pubs'}>>> d["uid"] = "sa"  2>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}

不能在一個字典中有重複的鍵字。給一個存在的鍵字賦值會抹掉原來的值。

可以在任何時候加入新的鍵-值對。這種文法同修改存在的值一樣。(是的,它可能某天會給你帶來麻煩,你可能認為增加了新值,但實際上只是反覆地修改了同樣的值,因為你的鍵字沒有按照你的想象改變。)

注意新的元素(鍵字為 uid,值為 sa)出現在字典中間。實際上,它只不過是一種巧合,在第一個例子中的元素看上去是有序的。現在它們看上去無序了則更是一種巧合。

Note

字典沒有元素順序的概念。說元素順序亂了是不正確的,它們只是簡單的無序。這是一個重要的特性,它會在你想要以一種特定的,可重複的順序(象以鍵字的字母表順序)存取字典元素的時候騷擾你。有一些實現的方法,它們只是沒有加到字典中去。

在字典中混用資料類型

>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}>>> d["retrycount"] = 3 1>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}>>> d[42] = "douglas" 2>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}

字典不是只用於字串。字典的值可以是任意資料類型,包括字串,整數,對象,或者甚至其它的字典。在一個單個字典裡,字典的值並不需要全都是同一資料類型,可以根據需要混用和配匹。
字典的關鍵字要嚴格一些,但是它們可以是字串,整數和幾種其它的類型(後面還會談到這一點)。也可以在一個字典中混用和配匹關鍵字。

從字典中刪除元素

>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}>>> del d[42] 1>>> d{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}>>> d.clear() 2>>> d{}

del 允許你根據鍵字將單個元素從字典中刪除。
clear 會刪除一個字典中所有元素。注意空的大括弧所表示的集合說明一個字典沒有元素。

字串是大小寫敏感

>>> d = {}>>> d["key"] = "value">>> d["key"] = "other value" 1>>> d{'key': 'other value'}>>> d["Key"] = "third value" 2>>> d{'Key': 'third value', 'key': 'other value'}

將一個值賦給一個存在的字典關鍵字只是簡單的用新值替換舊值。

這樣做不會將一個值賦給一個存在的字典關鍵字,因為在Python中字串是大小寫敏感的,所以 'key' 與 'Key' 是不同的。這樣就在字典中產生了一個新的鍵/值對。對你來說可能差不多,但對於Python來說,完全是不同的。

如何訪問字典中的值:

>>> dict2 = {'name':'earth','port':80}  >>> for key in dict2.keys():     ... print 'key=%s,value=%s' %(key,dict2[key])...key=name,value=earthkey=port,value=80>>> for key in dict2:       ... print 'key=%s,value=%s' %(key,dict2[key])...key=name,value=earthkey=port,value=80


擷取字典某個元素值:

>>> dict2['name']'earth'>>> print 'host %s is running on port %d' %(dict2['name'],dict2['port'])host earth is running on port 80


檢查字典中是否有某個鍵的方法 has_key()或in,not in

>>> 'name' in dict2True>>> 'server' in dict2False>>> 'name' in dict2 True>>> dict2['name']'earth'>>> dict2.has_key('server')False>>> dict2.has_key('name') True


一個字典中混用數字和字串的例子:

>>> dict3 = {}>>> dict3[1] = 'abc'>>> dict3['1'] = 3.14159>>> dict3[3.2] = 'xyz'>>> dict3{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}


整體賦值:

>>> dict3 = {'1': 3.14159, 1: 'abc', 3.2: 'xyz',33:'hehe'}>>> dict3{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}


更新字典:

>>> dict2['name'] = 'venus'>>> dict2['port'] = 6969>>> dict2['arch'] = 'sunos5'>>> print 'host %(name)s is running on port %(port)d' %dict2host venus is running on port 6969


刪除字典元素和字典

>>> dict2{'arch': 'sunos5', 'name': 'venus', 'port': 6969}>>> del dict2['name']>>> dict2{'arch': 'sunos5', 'port': 6969}>>> dict2.clear()>>> dict2{}>>> del dict2>>> dict2Traceback (most recent call last): File "", line 1, in NameError: name 'dict2' is not defined>>> dict3{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}>>> dict3.pop(33) 'hehe'>>> dict3{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}


注:避免使用內建對象名字作為變數的標識符

類似: dict,list,file,bool,str,input,len

  • 聯繫我們

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