首页 > 解决方案 > python [if key in dict] 在没有 break 语句的情况下无法工作

问题描述

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

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

如果 parent 不存在,则 parentId=None。我有一个包含大约 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] 从未运行。但是,如果我这样写一个 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

有用。为什么?

标签: python-3.x

解决方案


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

祝你好运!


推荐阅读