对象与字典:如何组织数据树?
|
我正在对某种模拟进行编程,其数据以树的形式组织。主要对象是
World
,其中包含一堆方法和City
对象的列表。每个“ 1”对象又具有一堆方法和一个“ 3”对象列表。 “ 3”个对象没有自己的方法,仅包含属性。
我的问题是关于后一个“ 3”对象,我可以从“ 6”派生对象,也可以将其创建为字典。组织这些最有效的方法是什么?
以下是一些说明我犹豫的案例:
保存数据
我需要能够保存和加载仿真,为此目的,我使用了内置的json(我希望数据是人类可读的)。由于该程序以树形组织,因此在每个级别上保存数据都非常麻烦。在这种情况下,总体最好保留为字典,并附加到population
列表作为City
实例的属性。这样,保存只是将City
实例的__dict__
传递给Json的问题。
使用数据
如果要操纵总体数据,则作为类实例比作为字典更容易。不仅语法简单,而且在编码时我还可以更好地使用自省功能。
性能
最后,我不确定什么是最有效的资源。一个对象和一个字典的末尾几乎没有什么区别,因为每个对象都有一个ѭ10can属性,可用于访问其所有属性。如果我使用大量的City
和Population
对象运行模拟,那么使用较少资源的对象或字典将是什么?
再次重申,在树中组织数据的最有效方法是什么?字典或对象更可取吗?还是组织数据树有什么秘密?
没有找到相关结果
已邀请:
4 个回复
臀夯脖锑
/
?
现在,您可以通过属性(
)轻松访问已知名称,同时仍具有
功能来轻松访问未知名称,对其进行迭代等,而无需笨拙的
/
语法。 如果要始终使用特定字段初始化它们,则可以添加
方法:
刷遍派戳
蜂佬渺
(请参阅
模块上的Python文档)。您可以像使用普通类一样按名称访问
对象的属性。用
代替
。由于您没有在
类上放置任何方法,这就是您所需要的。 对于您的“保存数据”标准,还有一个
方法,该方法将字段名的字典返回为可以传递给json的值。 (根据所使用的Python版本,您可能需要小心从此方法中获得的确切信息。某些版本返回字典,而某些版本返回
。这可能对您的目的没有任何影响。 )
也很轻巧,因此它们也可以满足您的“运行模拟”资源需求。但是,我想回应其他人的警告是不要担心,除非您要进行一些认真的数据处理,否则差异将很小。
董碘奴星