私は辞書を作成します:
options = {'this': doThis,'that' :doThat, 'there':doThere}
今すぐ使用してください:
options.get(something, doThisMostOfTheTime)()
辞書にsomething
が見つからない場合は、デフォルト値を返しますoptions
dict.get
doThisMostOfTheTime
いくつかのタイミング比較:
脚本:
from random import shuffle
def doThis():pass
def doThat():pass
def doThere():pass
def doSomethingElse():pass
options = {'this':doThis, 'that':doThat, 'there':doThere}
lis = range(10**4) + options.keys()*100
shuffle(lis)
def get():
for x in lis:
options.get(x, doSomethingElse)()
def key_in_dic():
for x in lis:
if x in options:
options[x]()
else:
doSomethingElse()
def if_else():
for x in lis:
if x == 'this':
doThis()
elif x == 'that':
doThat()
elif x == 'there':
doThere()
else:
doSomethingElse()
結果:
>>> from so import *
>>> %timeit get()
100 loops, best of 3: 5.06 ms per loop
>>> %timeit key_in_dic()
100 loops, best of 3: 3.55 ms per loop
>>> %timeit if_else()
100 loops, best of 3: 6.42 ms per loop
10**5
存在しないキーと 100 個の有効なキーの場合::
>>> %timeit get()
10 loops, best of 3: 84.4 ms per loop
>>> %timeit key_in_dic()
10 loops, best of 3: 50.4 ms per loop
>>> %timeit if_else()
10 loops, best of 3: 104 ms per loop
したがって、通常の辞書では、キーを使用してチェックするのkey in options
が最も効率的な方法です。
if key in options:
options[key]()
else:
doSomethingElse()