def assign_ID(dic,id):
for key, value in enumerate(dic):
for elem in range(value):
if id in dic[value]:
return value
我上面的函数完成了我想要它做的事情 - 但问题是因为字典dic在我的程序的主要部分变得更大,我的" assign_ID"功能需要太长时间。最初这个函数需要大约1/100秒才能运行,但是在几千行输入之后,它开始需要半秒钟,然后是一整秒,然后是更长时间。问题是我的输入文件太大,最终这个函数使整个程序至少需要两整天才能运行。
有没有办法重新编写上面的函数,以便它运行得更快?我希望能够定期运行这个程序,所以我真的希望它运行得比它快。
非常感谢您提前寻求帮助!
答案 0 :(得分:4)
好吧,直接蝙蝠,摆脱enumerate
。而且,你的第二个for-loop什么也没做。摆脱它:
def assign_ID(dic, id):
for key in dic:
if id in dic[key]:
return key
上述功能应该完成旧功能所做的一切,只会更快。
答案 1 :(得分:4)
您可以使用iteritems
更有效地迭代字典项(在Python 2.x中):
for k,v in dic.iteritems():
if id in v:
return k
正如@Bakuriu在Python 3.x中所观察到的那样:
for k,v in dic.items():
if id in v:
return k
因为在Python 3.x items()
中将提供迭代器,类似于Python 2.x中的iteritems()
。