gpt4 book ai didi

Python:有没有办法使所有对一个对象的引用都引用另一个对象?

转载 作者:行者123 更新时间:2023-12-01 05:29:26 26 4
gpt4 key购买 nike

例如(从实际使用情况大大简化):

我有一个包含 3 个对象之一的 10,000 个引用的列表:

a,b,c = {'font-size':1},{'font-size':2},{'font-size':2.3}`
styles = [a,b,c,a,a,a,a,a,b,......] #10,000

这节省了我为 10000 个索引中的每一个创建一个新字典的内存,因为它们都属于三个值之一(实际上有数百个)。

现在我决定 font-size 必须是 int,因此我将 c 舍入为 {'font-size':2}。但我希望所有 c 都变成 b,因为它们现在是一样的。

有没有一种方法(不需要彻底检查列表并比较每个值并在需要时替换它,我知道这一点,但如果我必须对许多对象一次又一次地执行此操作,速度会很慢)来制作所有引用c 引用 b?我知道 python 保留了一个用于垃圾清理的此类引用的列表。或者也许可以让c引用的对象自动依次引用b

编辑:我很欣赏建议的解决方法,但正如评论中所述,这些解决方法都给我留下了我希望通过找到问题的答案(更改引用)来减少的问题(内存消耗或时间消耗)通过 python 的引用列表或以某种方式在 python 内部重定向引用)。

最佳答案

如何使用样式索引:

template = a, b, c = {'font-size':1},{'font-size':2},{'font-size':2.3}`
#styles = [a,b,c,a,a,a,a,a,b,......]
styles = [0,1,2,0,0,0,0,0,1,......]

c['font-size'] = 2
# OR template[2]['font-size'] = 2
# OR template[2] = template[1]

缺点:

需要额外取消引用才能访问实际值:template[styles[i]] 而不是 styles[i]

关于Python:有没有办法使所有对一个对象的引用都引用另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com