我有一个(可能相当大的)字典和一个“可能的”键列表。我想快速找到哪些键在字典中具有匹配的值。我发现了很多关于单字典值
here和
here的讨论,但没有讨论速度或多个条目。
我已经提出了四种方式,对于最好的三种方法,我比较以下不同样本大小的速度 – 有更好的方法吗?如果人们可以建议合理的竞争者,我也会对他们进行分析。
示例列表和字典创建如下:
import cProfile
from random import randint
length = 100000
listOfRandomInts = [randint(0,length*length/10-1) for x in range(length)]
dictionaryOfRandomInts = {randint(0,length*length/10-1): “It’s here” for x in range(length)}
方法1:’in’关键字:
def way1(theList,theDict):
resultsList = []
for listItem in theList:
if listItem in theDict:
resultsList.append(theDict[listItem])
return resultsList
cProfile.run(‘way1(listOfRandomInts,dictionaryOfRandomInts)’)
32个函数调用在0.018秒
方法2:错误处理:
def way2(theList,theDict):