替换 Python3 中的引用

Replacing references in Python3

我有一个 pythonic 列表,其中包含可以重复的对象。例如,

t_list = [object1, object2, object3, object1, object1, object5]

为了消除重复,我使用 list(set(t_list))。但是在我的数据方案中有很多对象,其中包含对 t_list 元素的引用。因此,如果我从列表中删除一些元素,对它们的引用将保留。

我需要在删除重复项后自动替换所有现有引用。例如,如果我从 t_list 中删除第 3 个和第 4 个元素,引用将指向 t_list[0].

如何在不遍历数据方案的所有元素的情况下做到这一点?这可能吗?

假设您有一个列表和一个数据对象:

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 上的转换将从中删除任何多重引用,但不会以任何方式更改数据。