首先,我是Python的新手,因此如果我忽略了某些内容,我深表歉意,但是我想使用dict.fromkeys
(或类似的名称)来创建列表的字典,该列表的键在另一个列表中提供。我正在执行一些计时测试,我希望键是输入变量,列表中要包含运行时间:
def benchmark(input):
...
return time_taken
runs = 10
inputs = (1, 2, 3, 5, 8, 13, 21, 34, 55)
results = dict.fromkeys(inputs, [])
for run in range(0, runs):
for i in inputs:
results[i].append(benchmark(i))
我遇到的问题是字典中的所有键似乎都共享同一列表,并且每次运行都只是追加到列表中。有什么方法可以使用
fromkeys
为每个键生成唯一的空列表吗?如果不是,是否还有另一种方法可以手动生成结果字典呢? 最佳答案
问题是
results = dict.fromkeys(inputs, [])
[]仅在该位置被评估一次。
我会像这样重写这段代码:
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))
其他选择是:
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))
关于python - 如何使用dict.fromkeys为每个键创建唯一值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/654646/