Я не понимаю, почему эта функция с использованием dicts работает медленнее, чем «if», может ли кто-нибудь объяснить мне, почему / и дать мне более быстрый и более питонный c способ, чем «if
x 3» (что станет хуже, если в конечном итоге требуется больше сравнений)?
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