python字典的索引快速搜尋方法比較

2022-05-08 19:03:08 字數 2205 閱讀 9479

閒話少敘,python中經常會對字典的索引進行搜尋判斷,如判斷『user』是否為的索引,本文總結了5種方法進行索引的搜尋,並比較了執行時間。

五種方法有:

① index in dict.keys()

② dict.has_key(index)

③ index in dict

④ index in set(dict)

⑤ index in set(dict.keys())

先構建乙個程式執行時間的函式,用於測試。

from time import clock as now

def costtime(f, testdict, num, describe):

start =

now()

f(testdict,

num)

finish =

now()

return 'the

costing time of %s is %f' % (describe, finish - start)

然後分別寫出五個函式:

#測試dict.keys()

def test_dictkeys(testdict, num):

for i in

range(num):

if i in testdict.keys():

testdict[i]

#測試dict.has_key()

def test_has_key(testdict, num):

for i in

range(num):

if testdict.has_key(i):

testdict[i]

#測試dict

def test_dict(testdict,

num):           

for i in

range(num):

if i in testdict:

testdict[i]

#測試set

def test_set(testdict,

num):           

tt =

set(testdict)

for i in

range(num):

if i in tt:

testdict[i]

#測試set_dictkeys

def test_setdictkeys(testdict, num):

tt =

set(testdict.keys())

for i in

range(num):

if i in tt:

testdict[i]

下面為主程式

num = 50000

#初始化字典

test = dict()

for i in range(num):

test[i] =

i-0.1

print costtime(test_dictkeys, test,  num,

'dict.keys()')

print costtime(test_has_key, test, num, 'dict.has_key()')

print costtime(test_dict, test, num, 'in dict')

print costtime(test_set, test, num, 'in set')

print costtime(test_setdictkeys, test, num,

'set(dict.keys())')

得到的結果為:

the costing time of dict.keys() is 79.946342

the costing time of dict.has_key() is 0.017616

the costing time of in dict is 0.012359

the costing time of in set is 0.015817

the costing time of set(dict.keys()) is 0.016689

從以上執行時間上,可以看出第三種方法是最快速的,第一種方法是最慢的,而且相差不是一星半點。究其原因,應該是dict.keys()得到的結果是有序

的list資料型別,而最後面三種是dict或者set型別,是無序的。但更深層次的解釋,還需要繼續深究。也請大神們賜教。

python字典中如何索引 如何索引字典?

如果仍然有人在看這個問題,那麼當前接受的答案已經過時了 由於python 3.7 字典是順序保留的,因此它們現在的行為與collections.ordereddicts 完全相同。不幸的是,仍然沒有專用的方法可以索引到字典的keys values 中,因此可以通過以下方法獲取字典中的第乙個鍵 值 f...

Python中的字典索引

python中的符合資料型別 字串,列表和序列。它們用整數作為索引。如果你試圖用其他的型別做索引,就會產生錯誤。list 1 2,3 list 0 1 list one traceback most recent call last file line 1,in list one typeerror...

python建立字典索引

以四字成語為例w abcd w a bc d,分別代表成語中的四個字,分別以成語的四個字建立索引,具體操作如下 1 遍歷成語字典,找出所有成語的第乙個字,將其作為字典裡的索引a a 並找出以索引的開頭的所有成語放入字典的key值中,例 m m 表示第乙個字為a1 role presentation ...