我有两个字典,它们具有相同的键但值不同。我想执行一个将两者结合起来的操作,然后按特定顺序创建它们的“列表类型”对象。我将在大型数据集上执行此操作,因此速度是首要任务。这样做的最快方法是什么?
到目前为止,我有这些想法。我是python的新手,所以我不太了解每个函数如何运行,但我假设选项2是最快的。有更快的方法吗?
mydict = {"cats":1,"dog":3,"bird":2,"wolves":10}
exp = {"cats":10,"dog":23,"bird":34,"wolves":43}
#Option 1
mydict.update((x, y**(exp[x])) for x, y in mydict.items())
items = mydict.values()
#Option 2 // I think this is currently the fastest
items = []
items.append(y**(exp[x]) for x,y in mydict.items())
#Option 3
items = numpy.array(len(mydict))
for x,y in mydict:
items[?] = y**(exp[x]) // Is there a way to do this? Maybe with a counter
答案 0 :(得分:4)
怎么样
[mydict[key]**exp[key] for key in mydict.keys()]
假设mydict和exp都有完全相同的密钥?
旁注:
[mydict[key]**exp[key] for key in mydict]
与上面的内容相同,.keys()
是可选的。
如果您关心速度,请使用时间模块测试每种方法的速度:
import time
t = time.clock()
for i in range(1000):
# your code here, for example:
[mydict[key]**exp[key] for key in mydict.keys()]
print "time", time.clock() - t