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