python [if dict中的键]没有break语句将无法正常工作

时间:2018-08-21 16:17:38

标签: python-3.x

因此,我有一个字典{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

有效。为什么?

1 个答案:

答案 0 :(得分:0)

如果我愿意成为你的朋友。我将删除while parentId:行。
并仅使用if parentId in d:

祝你好运!