将字典值和输出乘以'列表类型'的最快方法

时间:2013-07-24 22:11:31

标签: python list optimization dictionary numpy

我有两个字典,它们具有相同的键但值不同。我想执行一个将两者结合起来的操作,然后按特定顺序创建它们的“列表类型”对象。我将在大型数据集上执行此操作,因此速度是首要任务。这样做的最快方法是什么?

到目前为止,我有这些想法。我是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

1 个答案:

答案 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