python - 从集合中检索值
问题描述
我正在处理一个涉及很多对象的问题 (B)。初始化这些对象时会执行大量计算,具体取决于它们的某些属性。由于这组属性(在数学意义上)通常由这些对象共享,因此我将属性本身包装在另一个对象 (C) 中,从而实现了很好的加速,因为每个不同的 C 只执行一次计算。
我的 B 列表保存在对象 A 中,负责它们的初始化。每个 B 都有一个对 C 的引用,而 A 持有不同 Cs (c_set) 的 (pythonic) 集。当我向 A 添加一个新的 B 时,我检查它的 C 是否存在于 c_set 中(哈希仅取决于输入参数);如果是这样,我将这个新的 B 的 C 属性更改为集合中存在的版本,该版本已经正确初始化。就像是:
class A:
def add_b(self, b: B):
if b.c in self.c_set:
for c in self.c_set:
if c is b.c:
break
b.c = c
else:
self.initialize(c, other_params) # the heavy bit
self.c_set.add(c)
self.b_list.add(b)
它工作正常,但我对从集合中“挽救”现有值的方式并不完全满意。我想知道我在这里所做的事情是否有替代结构,基本上是从一组中获取一个值。我的第二个想法是使用值与键相同的字典;所以我可以写c = c_dict[c]
,但似乎有点过头了!
我不知道其他不太常见的数据结构是否适合我的用例。
解决方案
推荐阅读
- java - 我如何在 do while 语句中保存用户输入
- spring-boot - aws serverless spring boot 设置失败
- python-3.x - 如何修复 python 中的“TypeError:无法解压缩不可迭代的 numpy.float64 对象”错误
- python - Django 转换为 CBV + 测试
- wordpress - WordPress 不支持自定义帖子类型的 _x() 标签函数的翻译
- java - thymeleaf 不同的行为(通过数据库和resttemplate)
- javascript - 当文本变得可见时在滚动期间更改图像
- python-3.x - 使用 for 循环计算字符串中的列表元素
- javascript - 将 JSONArray 传递到 Google 折线图
- swift - 如何从 HealthKit 中检索今天的正念记录?