所以,我有一个字典{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:
。
祝你好运!