python中的dict等於js中的 map ,使用鍵-值(key-value)儲存,具有極快的查詢速度。如果 我們要根據同學的姓名去查詢他的成績在不用dict的情況下。就需要兩個list:
names = ['michael', 'bob', 'tracy']
scores = [95, 75, 85]
// 通過乙個名字,去查詢對應的位置,再從scores中取出對應的成績
這樣導致list的越來越長,速度越來越慢
// 如果通過dict實現,只需要「名字-成績」就行,無論這個表多大,查詢速度都不會變慢,如下:
>>> d =
>>> d['michael']
95
原理: 因為dict是通過索引去查詢的而不是通過遍歷的方式去找的。
// 除了初始化指定外,還可以通過key放入:
>>> d['adam'] = 67
>>> d['adam']
67// 由於乙個key只能對應乙個value,所以,多次對乙個key放入value,後面的值會把前面的值沖掉:
>>> d['jack'] = 90
>>> d['jack']
90>>> d['jack'] = 88
>>> d['jack']
88
如果key不存在,dict將會報錯。 可以通過in判斷key是否存在或者通過get()方法
// in 方法
>>> 'thomas' in d
false
// get() key不存在返回none
>>> d.get('thomas')
>>> d.get('thomas', -1)
-1// 刪除key 通過 pop()方法
>>> d.pop('bob')
75>>> d
注意點:
1. dict 內部存放的順序和key的放入順序沒有關係
2. 和list比較
2.1 查詢和插入速度極快,不會隨著key的增加而變慢
2.2 需要占用大量的記憶體,記憶體浪費多
3. 和list相反
3.1 查詢和插入時間隨著元素的增加而增加
3.2 占用空間小,浪費記憶體少
4. dict是一種以空間換時間的方法
5. dict的key必須是不可變物件
6. 字串和整數等不可變,可以作為key,而list的則不行。
和dict類似,但是不儲存value,key不重複。建立set,需要提供乙個list作為輸入集合,如下:
>>> s = set([1, 2, 3])
>>> s
// 傳入的引數[1, 2, 3]是乙個list,而顯示的只是告訴你這個set內部有1,2,3這3個元素,
顯示的順序也不表示set是有序的
// set中重複將會被過濾
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
// 通過add(key)可以向set中新增元素,可以重複新增但無效果
>>> s.add(4)
>>> s
>>> s.add(4)
>>> s
// 通過remove(key)刪除元素
>>> s.remove(4)
>>> s
set和dict的區別僅在於沒有儲存對應的value。
對於可變物件,對它進行操作,物件本想將會變化
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']
對於不可變物件,物件本身不會變化
>>> a = 'abc'
>>> a.replace('a', 'a')
'abc'
>>> a
'abc'
所以,對於不變物件來說,呼叫物件自身的任意方法,也不會改變該物件自身的內容。相反,這些方法會建立新的物件並返回,這樣,就保證了不可變物件本身永遠是不可變的。
python基礎教程 dict和se
python內建字典 dict,全稱dictionary,在其他語言中稱為map,使用鍵值對儲存。ex d d xiaoli 95 直接定義鍵值對 ex d adm 67 d adm 67 判斷key是否存在 ex in 判斷 theme in d false get方法 d.get theme d...
python基礎教程之Hello World
python命令列 假設你已經安裝好了python,那麼在linux命令列輸入程式設計客棧 複製 如下 python 將直接進入python。後面輸入 複製 如下 print hello world 可以看到,隨後在螢幕上輸出 複製 如下 hello world print是乙個常用函式,其功能就是...
Python 基礎教程之Python 簡介
python 是一種解釋型 物件導向 動態資料型別的高階程式語言。python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型...