def accessdict(a, key1, key2): a[key1] a[key1] a[key2] a[key1] a[key1] a[key1] a[key2] a[key2] a[key1] a[key2] a[key1] a[key1] a[key1] a[key1] a[key1] a[key1] a[key2] a[key2] a[key1] a[key1] a[key1] a[key2] a[key1] a[key1] a[key1] a[key1] a[key2] a[key2] a[key2] a[key1] a[key2] a[key1] class StrSub(str): __slots__ = () def main(): from time import sleep from timeit import timeit ts = [[],[],[]] vx1 = 'x' vx1 += '1' cx1 = StrSub('x1') for i in range(100): adict = {'x1': 42, 'x2': 43, 'x4': 44} ts[0].append(timeit(lambda: accessdict(adict, vx1, 'x2'))) ts[1].append(timeit(lambda: accessdict(adict, cx1, 'x2'))) ts[2].append(timeit(lambda: accessdict(adict, vx1, 'x2'))) for tt in ts: avg = sum(tt) / len(tt) sd = sum((v - avg)**2 for v in tt) / (len(tt) - 1) print(avg, '+-', sd**0.5) main()