走進Python世界(五)數據類型 5. 序列類型-字典(Dictionary)

什麼是字典

字典是python中惟一的映射類型(哈希表)html

字典是無序的python

字典對象是可變的,可是字典的鍵必須使用不可變的對象,而且一個字典中可使用不一樣的類型鍵值yii

keys() 或者values()返回鍵列表或者值列表spa

items()返回鍵值對的元組code


建立字典

通常方法

經常使用的方式就是直接使用{}
htm

通常語法以下:對象

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

工廠方法

使用工廠方法dict來建立字典ip

通常語法以下:ci

fdict=dict(['x',1],['y',2])

內建方法

使用內建方法fromkeys來建立字典嗎,字典元素中的元素巨有相同的值,默認爲nonerem

通常語法以下:

ddict={}.fromkeys(('x','y'),-1)

訪問字典

使用key來訪問

使用key來訪問字典的內容

通常語法以下:

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

循環遍歷

如:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
for key in dict.keys()
  print dict[k]

使用迭代器

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
for key in dict
  print dict[k]

注意若是要訪問一個不存在的鍵,這會獲得一個錯誤,以下所示:

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

字典的更新和刪除

更新字典:

能夠經過添加一個新條目或項目(即一個鍵 - 值對),修改現有條目或刪除。做爲簡單的例子,以下圖所示在現有條目更新字詞:

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

# update existing entry
dict['Age'] = 8; 

# Add new entry
dict['School'] = "DPS School";

刪除字典元素:

能夠刪除單個字典元素或清除字典中的所有內容。也能夠刪除整個字典在一個單一的操做。

要刪除整個字典,只要用del語句。下面是一個簡單的例子:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
dict.pop('Name');     # remove entry with key Name and return its value
del dict ;        # delete entire dictionary
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

這將產生如下結果。注意引起異常,這是由於通過del dict刪除,字典已經不存在了:

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對象,不管是標準的對象或用戶定義的對象。可是做爲鍵,是不能夠這樣的。

要記住字典中的鍵的兩個要點:

(一)不許一個鍵對應多個條目。這意味着不能有重複的鍵。當有重複的鍵,在分配過程當中以最後分配的爲準。下面是一個簡單的例子:

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

當執行上面的代碼,產生如下結果:

dict['Name']:  Manni

(二)鍵的值字必須是不可變的。這意味着可使用字符串,數字或元組做爲字典的鍵,但像['key']是不容許的。下面是一個簡單的例子:

#!/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中包括如下字典功能:

SN 方法及描述
1 cmp(dict1, dict2)
比較兩個字典的元素
2 len(dict)
字典的長度。這將等同於在字典中的項數
3 str(dict)
產生字典裏可打印字符串表示形式
4 type(variable)
返回傳遞變量的類型。若是傳遞變量是字典,那麼它將返回一個字典類型

Python中包括如下字典方法

SN 方法及描述
1 dict.clear()
刪除字典dict中的全部元素
2 dict.copy()
返回字典dict的淺表副本
3 dict.fromkeys()
建立一個新的字典,設置鍵爲seq 和值爲value
4 dict.get(key, default=None)
對於鍵key,返回鍵,若是不是在字典的值或默認
5 dict.has_key(key)
若是在字典dict中存在鍵key,則返回true,不然返回 false
6 dict.items()
返回字典的(鍵,值)元組對的列表
7 dict.keys()
返回字典的鍵的列表
8 dict.setdefault(key, default=None)
相似get(),但會設定dict[key]=default若是key不是已經在於字典中
9 dict.update(dict2)
增長字典dict2的鍵值對到字典中
10 dict.values() 返回字典dict的值列表
相關文章
相關標籤/搜索