python字典的索引快速搜索方法比较
(2013-08-23 22:26:34)
标签:
pythondict索引搜索判断it |
分类: python |
四种方法有:
① 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):
然后分别写出五个函数:
#测试dict.keys()
def test_dictKeys(testDict, num):
#测试dict.has_key()
def test_has_key(testDict, num):
#测试dict
def test_dict(testDict, num):
#测试set
def test_set(testDict, num):
#测试set_dictkeys
def test_setDictKeys(testDict, num):
下面为主程序
num = 50000
#初始化字典
test = dict()
for i in range(num):
print costTime(test_dictKeys, test,
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类型,是无序的。但更深层次的解释,还需要继续深究。也请大神们赐教。