因此,我有一个字典{d},其中包含约200,000个数据。 d.key 是一个字符串, d.value 是一个有2个字符串的元组。
d = {id1:(parentId1,name1), id2:(None,name2), id3:(parentId3,name3), ... }
如果不存在父级,则parentId =无。我有一个包含约1000个数据的列表。结构如下:
alist =[ [id1,parentId1,name1],[id2,parentId2,name2],[id3,parentId3,name3], ...]
我想更改列表中的名称,以便它包含基于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语句检查过,下面的代码[如果d中的parentId]永远不会运行。但是,如果我输入这样的break语句:
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
有效。为什么?
答案 0 :(得分:0)
如果我愿意成为你的朋友。我将删除while parentId:
行。
并仅使用if parentId in d:
。
祝你好运!