我不明白为什么使用dicts的函数比“if”慢,有人能解释一下为什么/并给我一个比“if
x3”更快、更具python风格的方法吗(如果长期需要更多的比较,这会变得更糟)
import timeit
timeit.timeit("""
... conv_table = {'USEWR': 'USNYC',
... 'PAMIT': 'PACTB',
... 'NLMSV': 'NLRTM'}
... def fn(code: str):
... # conversion for those values:
... return conv_table.get(code, code)
... fn('USEWR')
... fn('PAMIT')
... fn('NLMSV')
... fn('XYZ')
... """)
0.6174538989998837
还有一个,速度更快,但使用“if
”:
timeit.timeit("""
... def fn(code: str):
... if code == 'USEWR':
... return 'USNYC'
... if code == 'PAMIT':
... return 'PACTB'
... if code == 'NLMSV':
... return 'NLRTM'
... return code
... fn('USEWR')
... fn('PAMIT')
... fn('NLMSV')
... fn('XYZ')
... """)
0.5126422860003004
正如Chris Doyle指出的,通过在
fn
函数中调用.get()
,您正在进行另外4个函数调用。这是一个更好的比较:相关问题 更多 >
编程相关推荐