I am programming some kind of simulation with its data organised in a tree. The main object is World
which holds a bunch of methods and a list of City
objects. Each City
object in turn has a bunch of methods and a list of Population
objects. Population
objects have no method of their own, they merely hold attributes.
My question regards the latter Population
objects, which I can either derive from object
or create as dictionaries. What is the most efficient way to organise these?
Here are few cases which illustrate my hesitation:
Saving the Data
I need to be able to save and load the simulation, for which purpose I use the built-in json (I want the data to be human readable). Because of the program is organised in a tree, saving data at each level can be cumbersome. In this case, the population is best kept as a dictionary appended to a population
list as an attribute of a City
instance. This way, saving is a mere matter of passing the City
instance's __dict__
into Json.
Using the Data
If I want to manipulate the population data, it is easier as a class instance than as a dictionary. Not only is the syntax simple, but I can also enjoy introspection features better while coding.
Performance
I am not sure, finally, as to what is the most efficient in terms of resources. An object and a dictionary have little difference in the end, since each object has a __dict__
attribute, which can be used to access all its attributes. If i run my simulation with large numbers of City
and Population
objects, what will be using the less resources: objects or dictionaries?
So again, what is the most efficient way to organise data in a tree? Are dictionaries or objects preferable? Or is there any secret to organising the data trees?