天天看點

python2.7入門---字典(Dictionary)

    這次咱們記錄的是python中的字典這個鬼,首先我們得了解,字典是另一種可變容器模型,且可存儲任意類型對象。字典的每個鍵值 key=>value 對用冒号 : 分割,每個鍵值對之間用逗号 , 分割,整個字典包括在花括号 {} 中 ,格式如下所示:

d = { key1 : value1 , key2 : value2 }

    鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。看一下執行個體:

>>> dict = { ' a ' : 1 , ' b ' : 2 , ' b ' : ' 3 ' }; >>> dict [ ' b ' ] ' 3 ' >>> dict { ' a ' : 1 , ' b ' : ' 3 ' }

    值可以取任何資料類型,但鍵必須是不可變的,如字元串,數字或元組。下面來看一個簡單的字典執行個體:

dict = { ' Alice ' : ' 2341 ' , ' Beth ' : ' 9102 ' , ' Cecil ' : ' 3258 ' }

    同樣,我們也可如此建立字典:

dict1 = { ' abc ' : 456 }; dict2 = { ' abc ' : 123 , 98.6 : 37 };

    接下來,我們來通路字典裡的值,方式就是把相應的鍵放入熟悉的方括弧,如下執行個體:

#!/usr/bin/python dict = { ' Name ' : ' Zara ' , ' Age ' : 7 , ' Class ' : ' First ' }; print " dict['Name']: " , dict [ ' Name ' ] ; print " dict['Age']: " , dict [ ' Age ' ] ;

    以上執行個體輸出結果:

dict['Name']:  Zara
dict['Age']:  7      

    我們如果用字典裡沒有的鍵通路資料,會輸出錯誤如下:

#!/usr/bin/python dict = { ' Name ' : ' Zara ' , ' Age ' : 7 , ' Class ' : ' First ' }; print " dict['Alice']: " , dict [ ' Alice ' ] ;

    以上執行個體輸出結果:

dict['Alice']: 
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'      

    然後我們就要來修改字典了,先來看一個向字典添加新内容的方法是增加新的鍵/值對,修改或删除已有鍵/值對的執行個體:

#!/usr/bin/python dict = { ' Name ' : ' Zara ' , ' Age ' : 7 , ' Class ' : ' First ' }; dict [ ' Age ' ] = 8 ; # update existing entry dict [ ' School ' ] = " DPS School " ; # Add new entry print " dict['Age']: " , dict [ ' Age ' ] ; print " dict['School']: " , dict [ ' School ' ] ;

    以上執行個體輸出結果:

dict['Age']:  8
dict['School']:  DPS School      

    我們再來嘗試删除字典中的元素。能删單一的元素也能清空字典,清空隻需一項操作。顯示删除一個字典用del指令,來看一個簡單的執行個體:

#!/usr/bin/python # -*- coding: UTF-8 -*- dict = { ' Name ' : ' Zara ' , ' Age ' : 7 , ' Class ' : ' First ' }; del dict [ ' Name ' ] ; # 删除鍵是'Name'的條目 dict . clear ( ) ; # 清空詞典所有條目 del dict ; # 删除詞典 print " dict['Age']: " , dict [ ' Age ' ] ; print " dict['School']: " , dict [ ' School ' ] ;

    但這會引發一個異常,因為用del後字典不再存在:

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable      

    到這裡呢,我們再來看一下字典鍵的特性。首先,字典值可以沒有限制地取任何python對象,既可以是标準的對象,也可以是使用者定義的,但鍵不行。兩個重要的點需要記,1)不允許同一個鍵出現兩次。建立時如果同一個鍵被指派兩次,後一個值會被記住,如下執行個體:

#!/usr/bin/python dict = { ' Name ' : ' Zara ' , ' Age ' : 7 , ' Name ' : ' Manni ' }; print " dict['Name']: " , dict [ ' Name ' ] ;

    以上執行個體輸出結果:

dict['Name']:  Manni      

    2)鍵必須不可變,是以可以用數字,字元串或元組充當,是以用清單就不行,如下執行個體:

#!/usr/bin/python dict = { [ ' Name ' ] : ' Zara ' , ' Age ' : 7 }; print " dict['Name']: " , dict [ ' Name ' ] ;

    以上執行個體輸出結果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable      

    我們最後來看兩個表單,首先是Python字典包含的内置函數:

序号 函數及描述
1

cmp(dict1, dict2)

比較兩個字典元素。

2

len(dict)

計算字典元素個數,即鍵的總數。

3

str(dict)

輸出字典可列印的字元串表示。

4

type(variable)

傳回輸入的變量類型,如果變量是字典就傳回字典類型。

    然後就是Python字典包含的内置方法:

序号 函數及描述
1

dict.clear()

删除字典内所有元素

2

dict.copy()

傳回一個字典的淺複制

3

dict.fromkeys(seq[, val])

建立一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值

4

dict.get(key, default=None)

傳回指定鍵的值,如果值不在字典中傳回default值

5

dict.has_key(key)

如果鍵在字典dict裡傳回true,否則傳回false

6

dict.items()

以清單傳回可周遊的(鍵, 值) 元組數組

7

dict.keys()

以清單傳回一個字典所有的鍵

8

dict.setdefault(key, default=None)

和get()類似, 但如果鍵不存在于字典中,将會添加鍵并将值設為default

9

dict.update(dict2)

把字典dict2的鍵/值對更新到dict裡

10

dict.values()

以清單傳回字典中的所有值

11

pop(key[,default])

删除字典給定鍵 key 所對應的值,傳回值為被删除的值。key值必須給出。否則,傳回default值。

12

popitem()

随機傳回并删除字典中的一對鍵和值。

    好啦,到這裡呢,就記錄完畢了。如果感覺不錯的話,請多多點贊支援哦。。。