字典
* 建立和使用字典 * dict()
>>> phonebook = {'Alice': '2341', 'Beth': '9102', 'Ceil': '3258'}
>>> phonebook
{'Beth': '9102', 'Alice': '2341', 'Ceil': '3258'}
>>> phonebook['Beth']
'9102'
>>> items = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
* 基本字典操做 *
字典在不少方面與序列sequence相似
(1), len(d) 返回d中項(鍵-值對)的數量;
(2), d[k] 返回關聯到鍵 k 上的值。
(3), d[k] = v 將值v關聯到鍵 k 上。
(4), del d[k] 刪除鍵爲 k 的項。
(5), k in d 檢查d中是否有含有鍵爲k的項。
字典與列表的三點區別: * 鍵類型 * 自動添加 * 成員資格
>>> x = []
>>> x[42] = 'hi'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> x = {}
>>> x[42] = 'hi'
>>> x
{42: 'hi'}
* 字典的格式化字符串 *
>>> "Ceil's phone number is %(Ceil)s." % phonebook
"Ceil's phone number is 3258."
* 字典方法 *
#1 clear() 方法的必要性
>>> _value = d.clear()
>>> d
{}
>>> print _value
None
爲何這個方法有用,請看 :
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x = {}
>>> y
{'key': 'value'}
對比
>>> x = {}
>>> y = x
>>> x['key'] = 24
>>> y
{'key': 24}
>>> x.clear()
>>> y
{}
#2 copy() 淺拷貝與深拷貝
>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Beth']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Beth', 'Clive']}
>>> dc
{'names': ['Alfred', 'Beth']}
#3 fromkeys() 使用給定的鍵創建新的字典,每一個鍵默認對應的值爲None
>>> dict.fromkeys(['name', 'age'], '(unkonw)')
{'age': '(unkonw)', 'name': '(unkonw)'}
#4 get() 是一個更寬鬆的訪問字典項的方法
>>> print d['name']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print d.get('name')
None
>>> print d.get('name', 'N/A')
N/A
>>> d
{'names': ['Alfred', 'Beth', 'Clive']}
>>> d['name'] = 'Eric'
>>> d
{'names': ['Alfred', 'Beth', 'Clive'], 'name': 'Eric'}
#5 has_key 檢查字典是否含有給出的鍵 d.has_key(k), k in d 同樣
>>> d = {}
>>> d.has_key('name')
False
>>> d['name'] = 'Etric'
>>> d.has_key('name')
True
#6 items 和 iteritems|items將全部的字典項以列表方式返回,後者返回迭代器
>>> d
{'name2': 'hi2', 'name': 'Etric'}
>>> d.items()
[('name2', 'hi2'), ('name', 'Etric')]
>>> it = d.iteritems()
>>> list(it)
[('name2', 'hi2'), ('name', 'Etric')]
#7 keys 和 iterkeys
#8 pop 方法用來得到對應於給定鍵的值
#9 popitem 方法相似於 list.pop, popitem 彈出隨機項
#10 setdefault 相似於 get, 特色是:在字典中不含有給定鍵的狀況下設定相應鍵值
#11 update update 方法能夠利用一個字典更新另一個字典
>>> d
{'name2': 'hi2', 'name': 'Etric'}
>>> x = {'name' : 'python update'}
>>> d.update(x)
>>> d
{'name2': 'hi2', 'name': 'python update'}
#12 values (以列表的形式返回字典中的值)和 itervalues
>>> d
{'name2': 'hi2', 'name': 'python update'}
>>> d.values()
['hi2', 'python update']
** -- 小結 -- ** *1 : 映射 : Python惟一內建的映射類型是字典 *2 : 利用字典格式化字符串 *3 : 字典的方法 下一章 : 條件,循環和其餘語句