我有一个pythonic列表,其中包含可能重复的对象。例如,
t_list = [object1, object2, object3, object1, object1, object5]
为了消除我使用list(set(t_list))
的重复。但在我的数据方案中有许多对象,其中包含对t_list
元素的引用。因此,如果我从列表中删除一些元素,它们的引用仍然存在。
我需要在删除重复后自动替换所有现有引用。例如,如果我从t_list
中删除第3和第4个元素,引用将指向t_list[0]
。
如果不循环遍历数据方案的所有元素,我该怎么做?这可能吗?
答案 0 :(得分:4)
假设您有一个列表和一个数据对象:
t_list = [object1, object2, object3, object1, object1, object5]
# ...
data = {
'some_path': t_list[1],
'some_more': {
t_list[3]
}
};
这意味着您的数据不依赖于任何形式的列表。您的数据引用了列表中的对象,但这些引用完全独立于t_list
。这意味着如果您更改列表:
t_list = list(set(t_list))
对您的data
对象没有任何影响,无需进一步操作。您甚至可以忽略该列表。
编辑:
这个小图说明了它们在内存中的对象,列表和引用:
t_list
上的转换将从中移除任何多个引用,但数据不会以任何方式更改。