0

我需要在迭代列表时更新它。基本上,我有一个元组列表,称为some_list每个元组包含一堆字符串,例如名称和路径。我想要做的是检查每个元组,查看名称,然后找到包含具有相同路径的字符串的所有元组并将它们从列表中删除。

顺序无关紧要,我只想遍历整个列表,但是每当我遇到具有特定路径的元组时,都应该从列表中删除所有元组(包括自己)。我可以轻松构建这样一个列表并将其分配给some_list_updated,但问题似乎是原始列表没有更新......

该代码或多或少具有以下结构:

for tup in some_list[:]:
    ...
    ...somecode...
    ...
    some_list = some_list_updated

似乎列表在我打印出来时确实会适当更新,但似乎 python 一直在迭代旧列表。什么是合适的方法——如果有的话?非常感谢!

4

1 回答 1

1

您想使用字典对路径进行计数,然后仅使用计数为 1 的路径,然后使用列表推导进行循环以进行最终过滤。使用collections.Counter()对象使计数部分变得容易:

from collections import Counter

counts = Counter(tup[index_of_path] for tup in some_list)

some_list = [tup for tup in some_list if counts[tup[index_of_path]] == 1]
于 2013-08-15T14:44:44.303 回答