【发布时间】:2016-01-06 15:03:24
【问题描述】:
我有一个 Pythonic 列表,其中包含可能重复的对象。例如,
t_list = [object1, object2, object3, object1, object1, object5]
为了消除重复我使用list(set(t_list))。但是在我的数据方案中有很多对象,其中包含对t_list 元素的引用。所以,如果我从列表中删除一些元素,对它们的引用仍然存在。
我需要在删除重复后自动替换所有现有的引用。例如,如果我从 t_list 中删除第 3 和第 4 个元素,引用将指向 t_list[0]。
如何在不遍历数据方案的所有元素的情况下做到这一点?这可能吗?
【问题讨论】:
-
因此,对于您的示例,结果将是
[object1, object2, object3, t_list[0], t_list[0], object5]? -
试试this
OrderedSetrecipe,可能正是你需要的数据结构。 -
让我直截了当地说 - 假设您有类似 found in this gist 的代码。假设您从
t_list中删除了所有list_one,您想将该删除传播到other_list?? -
您的数据模型如何引用 t_list 中的项目?您的意思是您在方案中存储了索引而不是对象引用?您的数据是否引用了 t_list?听你说的好像没什么事可做,没必要修改数据。
-
@Reti43,不,结果必须是
list(set(t_list)),即[object1, object2, object3, object5]。
标签: python python-3.x pass-by-reference