エントリーを保持しているかどうか検索するのに一番速い方法はなんだろう
リストに格納して"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
ディクショナリ速い.