我需要在迭代过程中更新列表。
基本上,我有一个名为some_list
的元组列表。每个元组都包含一串字符串,例如名称和路径。我想要做的是遍历每个元组,查看名称,然后找到包含具有相同路径的字符串的所有元组,并从列表中删除它们。
顺序无关紧要,我只想查看整个列表,但每当遇到具有特定路径的元组时,应从列表中删除所有元组(包括自己)。我可以很容易地构建这样一个列表并将其分配给some_list_updated
,但问题似乎是原始列表没有更新......
代码或多或少具有以下结构:
for tup in some_list[:]:
...
...somecode...
...
some_list = some_list_updated
当我打印出来时,列表似乎确实更新了,但似乎python继续迭代旧列表。什么是适当的方式 - 如果有的话?非常感谢!
答案 0 :(得分: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]