First, I\'m new to Python, so I apologize if I\'ve overlooked something, but I would like to use dict.fromkeys
(or something similar) to create a dictionary of
You can also do this if you don't want to learn anything new (although I recommend you do!) I'm curious as to which method is faster?
results = dict.fromkeys(inputs)
for run in range(0, runs):
for i in inputs:
if not results[i]:
results[i] = []
results[i].append(benchmark(i))
The problem is that in
results = dict.fromkeys(inputs, [])
[] is evaluated only once, right there.
I'd rewrite this code like that:
runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = {}
for run in range(runs):
for i in inputs:
results.setdefault(i,[]).append(benchmark(i))
Other option is:
runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = dict([(i,[]) for i in inputs])
for run in range(runs):
for i in inputs:
results[i].append(benchmark(i))
Check out defaultdict (requires Python 2.5 or greater).
from collections import defaultdict
def benchmark(input):
...
return time_taken
runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = defaultdict(list) # Creates a dict where the default value for any key is an empty list
for run in range(0, runs):
for i in inputs:
results[i].append(benchmark(i))