shtaxxx日記

コンピュータアーキテクチャについて研究している研究者の日記や技術紹介

エントリーを保持しているかどうか検索するのに一番速い方法はなんだろう

リストに格納して"in"で検索・リストに格納してcount()で検索・ディクショナリに格納してhas_key()で検索の3つの方法を試してみる

import sys
import os
import time

size = 10000000

t = []
for i in range(size):
    t.append(str(i))
h = {}
for i in range(size):
    h[str(i)] = True

s = time.time()
if '998' in t:
    print 'Exist'
e = time.time()
print 'list, in:' , e - s

s = time.time()
c = t.count('998')
if c > 0:
    print 'Exist'
e = time.time()
print 'list, count:', e - s

s = time.time()
if h.has_key('998'):
    print 'Exist'
e = time.time()
print 'hash, has_key:', e - s

Python2.7.2での実行結果

Exist
list, in: 0.000321865081787
Exist
list, count: 0.425924062729
Exist
hash, has_key: 1.00135803223e-05

ディクショナリ速い.