python for循环字典遍历计算速度太慢,初学python,求大神优化

风采哥 2019-03-30 02:28:41
Fracture_dic是一个字典,大概14万个keys; New_node_assign也是一个字典,也大概14万个keys。
下面是计算速度很慢的代码:
================================================
def yu(x):
if len(x)<=4:
return x
if len(x)>4:
return str(int(x[-4:]))
for i in Fracture_dic:
for j in range(4):
for k in New_node_assign:
if New_node_assign[k]==1 and yu(k)==Fracture_dic[i][j]:
Fracture_dic[i][j]=k
New_node_assign[k]=0
================================================
...全文
1219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxybamboo1 2019-04-02
  • 打赏
  • 举报
回复
没写需求就语言的快慢就是瞎扯, 还是hash的dict,怎么会慢。99%的慢是因为代码问题,和语言没关系
pzx521521 2019-04-02
  • 打赏
  • 举报
回复
这种基层代码 推荐用C写 然后python调用 python胶水语言, 慢没办法的
陈年椰子 2019-04-01
  • 打赏
  • 举报
回复
1、 函数 yu 就不需要 yu(s) 等同于 s[-4:] , 为啥要再次判断长度是否大于4,多此一举呢? for i in Fracture_dic: for j in range(4): for k in New_node_assign: # 这里以下改成函数 比如 ncheck(k) if New_node_assign[k]==1 and yu(k)==Fracture_dic[i][j]: Fracture_dic[i][j]=k New_node_assign[k]=0 # 删除该字典项 看算法是 New_node_assign[k]=0 就不需要判断了, 那应该把后面的循环体,整成函数。 动态管理 New_node_assign , 匹配上就把字典项删了, 这样循环到后期效率越来越高。
荇䔽Boso 2019-03-31
  • 打赏
  • 举报
回复
python的缺点就是慢啊。。你要快c就快。。
ruancan 2019-03-30
  • 打赏
  • 举报
回复
这些代码是要干啥?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧