亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中set、dict和dict.keys的性能對比

發布時間:2021-09-04 16:38:14 來源:億速云 閱讀:133 作者:chen 欄目:大數據

這篇文章主要介紹“python中set、dict和dict.keys的性能對比”,在日常操作中,相信很多人在python中set、dict和dict.keys的性能對比問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python中set、dict和dict.keys的性能對比”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

 當我們統計文本的詞頻時,通常需要查詢當前詞是否已經出現過,如果出現過,那么次數增1。通常我用dict來保存詞和詞頻。我常用的方式是:

if word not in vocab_dict:
    vocab_dict[word] = 0
vocab_dict[word] += 1

用了很久覺得速度還行。 
后來看到有大神是這么用的:

if word not in vocab_dict.keys():
    vocab_dict[word] = 0
vocab_dict[word] += 1

感覺這樣似乎合理一些,因為我要做的本來就是常看word是否是vocab_map的key.于是之后都用這種方式。 
某天,處理大量文本,且文本屬于開放領域,詞匯量也大,采用第二種方式,速度極慢,這時候,以為是查詢dict本身比較慢,并沒有意識到是vocab_map.keys()的問題。于是,將詞同時存入set,查詢時查set,速度快了很多。

if word not in vocab_set:
    vocab_dict[word] = 0
vocab_dict[word] += 1

抽取小部分數據,量化對比set、dict、dict.keys()的查詢速度,結果如下: 
1.查詢vocab_dict,打印語句:

print "time cost is %d ms." % ((end - begin).microseconds/1000)
time cost is 175 ms.

2.查詢vocab_dict.keys(),打印語句如下:

print "time cost is %d s." % ((end - begin).seconds)
time cost is 45 s.

3.查詢vocab_set,打印語句:

print "time cost is %d ms." % ((end - begin).microseconds/1000)
time cost is 168 ms.

和查詢vocab_dict差不多。

那么為什么dict.keys()查詢速度比另外兩個慢很多呢?這就要對比list、dict、set三種的數據結構了。 
dict.keys()實際上是list(keys),是dict的所有key組成的list。查找一個元素是否在list中是以list的下標為索引遍歷list.而查詢是否在dict中,是將key以hash值的形式直接找到key對應的索引,根據索引可直接訪問value。對量大的dict查詢,自然是后者快很多。 
而set和dict的存儲原理基本是一樣的,唯一不同的是,set沒有value,只有key。對查詢key是否在dict或sset內,效果基本上是一樣的。

由此,可以得出,如果存儲的數據會被反復查詢,且量大,那么,盡量不要用list,盡量用dict,如果元素不重復,用set更好。查詢是否在dict內,也不要在用dict.keys()

到此,關于“python中set、dict和dict.keys的性能對比”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德阳市| 贡觉县| 斗六市| 基隆市| 武宣县| 龙里县| 桃园县| 瑞安市| 上虞市| 湖北省| 穆棱市| 东乡| 浦城县| 禄劝| 信宜市| 邯郸市| 凤城市| 宜都市| 名山县| 武邑县| 故城县| 邯郸县| 德清县| 昌图县| 金溪县| 阿鲁科尔沁旗| 长白| 瓦房店市| 河北区| 同江市| 南投市| 伊吾县| 哈巴河县| 东丽区| 凉城县| 桦南县| 玛沁县| 平顶山市| 武义县| 和政县| 津市市|