字典在某些語言中可能稱爲 聯合內存 (associative memories) 或 聯合數組 (associative arrays)。序列是以連續的整數爲索引,與此不一樣的是,字典以"關鍵字"爲索引,關鍵字能夠是任意不可變類型,一般用字符串或數值。若是元組中只包含字符串和數字,它能夠做爲關鍵字,若是它直接或間接地包含了可變對象,就不能當作關鍵字。不能用列表作關鍵字,由於列表能夠用索引、切割或者 append() 和 extend() 等方法改變。html
字典是無序的鍵:值對 (key:value 對)集合,鍵必須是互不相同的(在同一個字典以內)。使用大括號建立一個空的字典:{}。初始化列表時,在大括號內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。數組
字典的主要操做是依據鍵來存儲和取值。也能夠用 del 來刪除鍵:值對(key:value),從一個不存在的鍵中取值會致使錯誤。瀏覽器
In [2]: tel = {'jack': 4098, 'sape': 4139}tel['guido'] = 4127print telprint tel['jack'] {'sape': 4139, 'jack': 4098, 'guido': 4127} 4098 In [3]: del tel['sape']tel['irv'] = 4127print telprint tel.keys()print'guido' in tel {'jack': 4098, 'irv': 4127, 'guido': 4127} ['jack', 'irv', 'guido'] True
序列運算無效,字典元素間是沒有順序的概念數據結構
對新索引賦值會添加項app
鍵不必定老是字符串函數
字典鍵也經常使用於實現稀疏數據結構。例如,**數組中只有少數位置上有存儲的值:ui
In [5]: tel.get('kkk',0) #返回指定鍵的值,若是值不在字典中返回default值 Out[5]: 0
dict() 構造函數能夠直接從 key-value 對中建立字典spa
In [6]: dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) Out[6]: {'guido': 4127, 'jack': 4098, 'sape': 4139} In [7]: dict.fromkeys(['a','b'],0) #建立一個新字典,以序列seq中元素作字典的鍵,val爲字典全部鍵對應的初始值 Out[7]: {'a': 0, 'b': 0} In [8]: dict(zip(['a','b','c'],[1,2,3])) Out[8]: {'a': 1, 'b': 2, 'c': 3} In [9]: {k:v for (k,v) in zip(['a','b','c'],[1,2,3])} Out[9]: {'a': 1, 'b': 2, 'c': 3}
此外,字典推導式能夠從任意的鍵值表達式中建立字典:code
In [10]: {x: x**2 for x in (2, 4, 6)} Out[10]: {2: 4, 4: 16, 6: 36}
若是關鍵字都是簡單的字符串,有時經過關鍵字參數指定 key-value 對更爲方便:htm
In [11]: D = dict(a=1,b=2,c=3)D Out[11]: {'a': 1, 'b': 2, 'c': 3} In [12]: {c:c*4 for c in 'JoinQuant'}#默認是集合 Out[12]: {'J': 'JJJJ', 'Q': 'QQQQ', 'a': 'aaaa', 'i': 'iiii', 'n': 'nnnn', 'o': 'oooo', 't': 'tttt', 'u': 'uuuu'} In [13]: {c:c*4 for c in ['JoinQuant']} Out[13]: {'JoinQuant': 'JoinQuantJoinQuantJoinQuantJoinQuant'} In [14]: {c.lower():c*4+'!' for c in 'JoinQuant'} Out[14]: {'a': 'aaaa!', 'i': 'iiii!', 'j': 'JJJJ!', 'n': 'nnnn!', 'o': 'oooo!', 'q': 'QQQQ!', 't': 'tttt!', 'u': 'uuuu!'}
咱們通常都很願意使用DataFrame,由於它方便,顯示清楚,可是其建立和操做速度較慢,若是你對程序運行速度有較高要求, 能夠考慮使用dict。目前平臺中使用到的字典主要有:
具體能夠在瀏覽器中按快捷鍵Ctrl + F,搜索「dict」,查看詳細幫助。
In [ ]:
相關閱讀: