python [if key in dict] 在没有中断语句的情况下无法工作



所以,我有一个字典{d},里面有大约200,000个数据。d.key是一个字符串,d.value是一个有 2 个字符串的元组。

d = {id1:(parentId1,name1), id2:(None,name2), id3:(parentId3,name3), ... }

如果父项不存在,则父 ID = 无。我有一个包含大约 1000 个数据的列表。结构如下所示:

alist =[ [id1,parentId1,name1],[id2,parentId2,name2],[id3,parentId3,name3], ...]

我想改变 alist 中的名称,以便它包含基于 parentId 的层次结构路径。当我执行以下代码时:

for a in alist:
parentId = a[1]
while parentId:
if parentId in d:
a[2] = d[parentId][1] + '/' + a[2] 
parentId = d[parentId][0]

它永远运行。我用 print 语句检查了,下面的代码 [if parentId in d] 从未运行过。但是,如果我放一个这样的中断语句:

i=0
for a in alist:
parentId = a[1]
while parentId:
if parentId in d:
a[2] = d[parentId][1] + '/' + a[2] 
parentId = d[parentId][0]
i=i+1
if i > 200000:
break

它有效。为什么?

如果我是你我的朋友。我会删除while parentId:行.
并且仅使用if parentId in d:

祝你好运!

最新更新