[size=medium]1. 字典是 python 語言中唯一的對映型別。對映型別物件裡雜湊值(鍵) 和指向的物件(值)是一對一的關係.
2. 乙個字典物件是可變的,它是乙個容器型別,能儲存任意個數的 python 物件,其中也包括其他容器型別。字典型別和序列型別容器類(列表、元組)的區別是儲存和訪問資料的方式不同。
3. 你所能獲得的有序集合只能是字典中的鍵的集合或者值的集合。
方法 keys() 或 values() 返回乙個列表,該列表是可排序的。
你還可以用 items()方法得到包含鍵、值對的元組的列表來排序。
由於字典本身是雜湊的,所以是無序的。
4. 建立字典和給字典賦值
>>> dict1 = {}
>>> dict2 =
>>> dict1, dict2
({}, )
>> fdict = dict((['x', 1], ['y', 2]))
>>> fdict
>>> fdict = dict((['x', 1], ['y', 2]))
>>> fdict
>>> ddict = {}.fromkeys(('x', 'y'), -1)
>>> ddict
5. 如何訪問字典中的值
>>> dict2 =
>>>> for key in dict2.keys():
... print 'key=%s, value=%s' % (key, dict2[key])
從 python 2.2 開始, 你可以不必再用 keys()方法獲取供迴圈使用的鍵值列表了。 可以
用迭代器來輕鬆地訪問類序列物件(sequence-like objects),比如字典和檔案。
>>> for key in dict2:
... print 'key=%s, value=%s' % (key, dict2[key])
6. 如果我們想訪問該字典中的乙個資料元素,而它在這個字典中沒有對應的鍵,
將會產生乙個keyerror錯誤:
檢查乙個字典中是否有某個鍵的最好方法是用字典的 has_key()方法, 或者另一
種比較好的方法就是從 2.2 版本起用的,in 或 not in 操作符。 has_key() 方法將會在未來的python 版本中棄用,所以用 in 或 not in 是最好的方法。
>>> 'server' in dict2 # 或 dict2.has_key('server')
false
7. 字典中的鍵必須是可雜湊的, 所以數字和字串可以作為字典中的鍵, 但是列表和其他字典不行。
>>> print 'host %(name)s is running on port %(port)d' %dict2
host venus is running on port 6969
8. 避免使用內建物件名字作為變數的識別符號
請不要用 dict, list,file, bool, str, input, len 這樣的內建型別為變數命名.
9. 內建函式 hash()本身並不是為字典設計的方法,但它可以判斷某個物件是否可以做乙個字典的鍵。將乙個物件作為引數傳遞給 hash(), 會返回這個物件的雜湊值。 只有這個物件是可雜湊的,才可作為字典的鍵 (函式的返回值是整數,不產生錯誤或異常)。
如果用比較操作符來比較兩個數值,發現它們是相等的,那麼即使二者的資料型別不同, 它
們也會得到相同的雜湊值。
如果非可雜湊型別作為引數傳遞給 hash()方法,會產生 typeerror 錯誤(因此,如果使用這樣的物件作為鍵給字典賦值時會出錯):
>>> hash()
traceback (innermost last): file "", line 1, in ?
typeerror: list objects are unhashable
10. 字典型別方法
dict.clear () 刪除字典中所有元素
dict.copy () 返回字典(淺複製)的乙個副本
dict.fromkeys (seq,val=none)
建立並返回乙個新字典,以 seq 中的元素做該字典的鍵,
val 做該字典中所有鍵對應的初始值(如果不提供此值,則預設為 none)
dict.get(key,default=none)
對字典 dict 中的鍵 key,返回它對應的值 value,
如果字典中不存在此鍵,則返回 default 的值(注意,引數 default 的預設值為 none)
dict.has_key(key)
如果鍵(key)在字典中存在,返回 true,
否則返回 false. 在 python2.2版本引入 in 和 not in 後,此方法幾乎已廢棄不用了,但仍提供乙個可工作的介面。
dict.items() 返回乙個包含字典中(鍵, 值)對元組的列表
dict.keys() 返回乙個包含字典中鍵的列表
dict.iter()
方法 iteritems(), iterkeys(), itervalues()
與它們對應的非迭代方法一樣,不同的是它們返回乙個迭代子,而不是乙個列表。
dict.popc(key[, default])
和方法 get()相似,如果字典中 key 鍵存在,刪除並返回 dict[key], 如果 key 鍵不存在,且沒有給出 default 的值,引發 keyerror 異常。
dict.setdefault(key,default=none)
和方法 set()相似,如果字典中不存在 key 鍵,
由 dict[key]=default 為它賦值。
dict.update(dict2) 將字典 dict2 的鍵-值對新增到字典 dict
dict.values() 返回乙個包含字典中所有值的列表
11. 所有不可變的型別都是可雜湊的,因此它們都可以做為字典的鍵。
乙個要說明的是問題是數字:值相等的數字表示相同的鍵。換句話來說,整型數字 1 和 浮點數 1.0 的雜湊值是相同的,即它們是相同的鍵。
12. 數學上, 把 set 稱做由不同的元素組成的集合,集合(set)的成員通常被稱做集合元素(setelements)。python 把這個概念引入到它的集合型別物件裡。集合物件是一組無序排列的可雜湊的值.
13. 和其他容器型別一樣,集合支援用 in 和 not in 操作符檢查成員, 由 len() 內建函式得到集合的基數(大小), 用 for 迴圈迭代集合的成員。但是因為集合本身是無序的,你不可以為集合建立索引或執行切片(slice)操作,也沒有鍵(keys)可用來獲取集合中元素的值。集合(sets)有兩種不同的型別,可變集合(set) 和 不可變集合(frozenset)。
14. 集合被建立的唯一方法 - 用集合的工廠方法 set()和 frozenset():
>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
>>> t = frozenset('bookshop')
>>> t
frozenset(['b', 'h', 'k', 'o', 'p', 's'])
>>> s.add('z')
>>> s.update('pypi')
>>> s.remove('z')
>>> s -= set('pypi')
>>> s | t
>>> s & t
>>> s - t
>>> s ^ t
[/size]
Python2X學習16 python 列表
1 生成列表 要生成list 1,2,3,4,5,6,7,8,9,10 我們可以用range 1,11 print range 1,11 1,2,3,4,5,6,7,8,9,10 列表生成式則可以用一行語句代替迴圈生成 l x x for x in range 1,11 print l 1,4,9,...
Python2X學習4 python變數
變數是用乙個變數名表示,變數名必須是大小寫英文 數字和下劃線 的組合,且不能用數字開頭 a 1t 007 t007 在python中,等號 是賦值語句,可以把任意資料型別賦值給變數,同乙個變數可以反覆賦值,而且可以是不同型別的變數 a 123 a是整數 print aa imooc a變為字串 pr...
Python2 X輸入函式
mystr raw input 請輸入指令 import os os.system mystr 執行結果 ps input返回的是數值型別,如int,float raw inpout返回的是 字串型別 string型別 若輸入是表示式,則input會計算出表示式的值,而raw input會原樣輸出 ...