閒話少敘,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 ...