1. 程式人生 > >python中的dict儲存

python中的dict儲存

(學習廖雪峰教程的筆記)

Python中的dict查詢速度非常快,這是因為dict的實現原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往後翻,直到找到我們想要的字為止,這種方法就是在list中查詢元素的方法,list越大,查詢越慢。

第二種方法是先在字典的索引表裡(比如部首表)查這個字對應的頁碼,然後直接翻到該頁,找到這個字。無論找哪個字,這種查詢速度都非常快,不會隨著字典大小的增加而變慢。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael'
] 95

dict就是第二種實現方式,給定一個名字,比如’Michael’,dict在內部就可以直接計算出Michael對應的存放成績的“頁碼”,也就是95這個數字存放的記憶體地址,直接取出來,所以速度非常快。

你可以猜到,這種key-value儲存方式,在放進去的時候,必須根據key算出value的存放位置,這樣,取的時候才能根據key直接拿到value。

請務必注意,dict內部存放的順序和key放入的順序是沒有關係的。
和list比較,dict有以下幾個特點:

查詢和插入的速度極快,不會隨著key的增加而變慢;
需要佔用大量的記憶體,記憶體浪費多。

而list相反:

查詢和插入的時間隨著元素的增加而增加;
佔用空間小,浪費記憶體很少。

所以,dict是用空間來換取時間的一種方法。

使用dict需要牢記的第一條就是dict的key必須是不可變物件。
這是因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(Hash)。

要保證hash的正確性,作為key的物件就不能變。在Python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key。

相關推薦

Python如何儲存影象

在Python中如何儲存影象,如何將陣列儲存為影象 主要是看了TensorFlow中第一部分中看到的,查了查資料總結下如何將陣列儲存為影象 原程式如下 import scipy.misc import os #from PIL import Image #把原始圖片儲存至MNIST_

pythondict 字典的方法

python dict 字典的方法 1. aDict.clear() 刪除aDict的所有項 2. aDict.copy() 返回aDict的副本 3. aDict.fromkeys(seq[,val]) 返回一個字典,其中的鍵值來自seq,而值都被設定為了val。該方法是類方法

Pythondict的特點

dict的第一個特點是查詢速度快,無論dict有10個元素還是10萬個元素,查詢速度都一樣。而list的查詢速度隨著元素增加而逐漸下降。 不過dict的查詢速度快不是沒有代價的,dict的缺點是佔用記憶體大,還會浪費很多內容,list正好相反,佔用記憶體小,但是查詢速度慢。 由於dict是按

python dict 在類宣告的位置不一樣,結果有所差別

第一種宣告方式: class A(object): names = {} def output(self): print(self.names) class A1(A): pass class A2(A): pass

python呼叫儲存過程

儲存過程一般來說在資料庫中直接定義,然後在python中呼叫 新建儲存過程: 執行 結果符合預期,接下來在python呼叫它 import pymysql conn = pymysql.connect(host='127.0.0.1', u

python Dict 轉 Json

最近在公司需要寫個小工具,運用到的python,然後需要將Dict轉成Json。之前遇到轉換Json失敗,然後以為複雜的Entity結構,不能用Json的庫Json.dump(),進行轉換。自己些了一個轉換函式,但是效果還是不理想,後來經過大牛點撥,說Dict都可以轉換成J

Pythondict的各種列印方式

dict = {'name':'ngy','age':23,'height':180}1. 最簡單的方式:print(dict)結果:{'name': ngy, 'age': 23, 'height': 180}2. 逐個列印key:for key in dict.keys(

pythondict字典的簡單了解

切割字符串 取字符串 dict dex 返回 刪除 存儲 split 支付 ‘‘‘概述:使用鍵-值(key-value)存儲,具有極快的查找速度註意!!:字典是無序的key的特性:1、字典中的key必須唯一2、key必須是不可變的對象3、字符串、整數都是不可變的,可以作為k

pythondict的fromkeys用法

創建多個對象 屬性 參數 為我 如果 第一個 可叠代對象 nbsp 用法 fromkeys是創造一個新的字典。就是事先造好一個空字典和一個列表,fromkeys會接收兩個參數,第一個參數為從外部傳入的可叠代對象,會將循環取出元素作為字典的key值,另外一個參數是字典的val

pythondict儲存

(學習廖雪峰教程的筆記) Python中的dict查詢速度非常快,這是因為dict的實現原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往後翻,直到找到我們想要的字為止,這種方法就是在list中查詢元素的方法,li

Pythondict

python dict 字典 內置類型 hash key value# dict # Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。 d = {‘Michael‘: 95, ‘Bob‘: 75,

pythondict的unicode打印成中文

輸出 dumps address point tle python json port ont python將dict中的unicode打印成中文 import jsona = {u‘content‘: {u‘address_detail‘: {u‘province‘:

Python列表(list)、字典(dict)排序的程序

self. 能夠 網站 軟件 too 字段 tool 生成 ted Python3 中的排序,在 Sorting HOW TO 中已經講得很清楚了。來個實際的例子,對下面的這個 list 依據創建時間排序: pages = [{‘title‘: ‘十年學會程序設計‘, ‘

Python內置數據類型list,tuple,dict,set的區別和用法

必須 div bsp 10個 用法 保險 進行 mov python Python語言簡潔明了,可以用較少的代碼實現同樣的功能。這其中Python的四個內置數據類型功不可沒,他們即是list, tuple, dict, set。這裏對他們進行一個簡明的總結。

python字典dict.get()和dict.setdefault()的異同點

def clas 即使 實例 字典 default 增加 存在 none 相同點: 兩者是參數相同:dict.get(key, default=None), dict.setdefault(key, default=None) 如果指定的鍵不存在時,兩者都返回默認值,默認

'dict_values' object does not support indexing, Python字典dict由value查key

ima 通過 pre rap error mod returns RR rds Python字典dict中由value查key 眾所周知,字典dict最大的好處就是查找或插入的速度極快,並且不想列表list一樣,隨著key的增加越來越復雜。但是dict需要占用較大的

pythonlist/tuple/dict/set的區別

代碼 方法 num super 三維 .get 浮點數 計算 keyword 序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。Python有6個序列的內置類型,但最常見的是列表list和元

python 資料結構的儲存方法

python中的一切都是物件,任何自定義的資料結構都可以寫成類 一、線性表 1.陣列實現 list, import array, np.array Python中list實現為動態陣列,而不是連結串列? 常用方法 append,extend, insert ,remove …

Pythonmysql資料庫儲存富文字編輯器的內容

使用python 模組MySQLdb自帶的針對mysql的字元轉義函式 escape_string """insert into csdn_test(message) VALUES("%s");""" % (pymysql.escape_string(item['content']))

python的多執行緒threading之儲存程序結果Queue

程式碼實現功能,將資料列表中的資料傳入,使用四個執行緒處理,將結果儲存在Queue中,執行緒執行完後,從Queue中獲取儲存的結果 import threading from queue import Queue def job(l, q): for i in range