猿问

在迭代集合时修改集合是否存在任何危险?

我有以下设置:


co_occurrences = defaultdict(lambda: defaultdict(int))

# Populate the dictionary...


for word, occurrence_vector in co_occurrences:

    if word == "__length": continue


    for file_name, occurrence_count in occurrence_vector:

        co_occurrences[word][file_name] = occurrence_count / co_occurrences["__length"][file_name] 

这行是:


co_occurrences[word][file_name] = occurrence_count / co_occurrences["__length"][file_name]

危险的?危险是指我只希望一次又一次地遍历每个键,因此任何修改此行为的代码都是危险的。我感觉可能是因为我正在修改要遍历的数据结构。


杨魅力
浏览 139回答 2
2回答

HUX布斯

如前所述,通常很好,只有字典大小改变时才会出现问题。如果发生这种情况,它将抛出Exception并停止执行,因此如果执行时不带RuntimeError,那么您所做的一切都很好。

德玛西亚99

仅当更改要迭代的数据的结构(即)时,这才是危险的。添加/删除密钥,否则完全可以编辑现有密钥。
随时随地看视频慕课网APP

相关分类

Python
我要回答