Объект против словаря: как организовать дерево данных?

Я программирую какую-то симуляцию с его данными, организованными в виде дерева. Главный объект - World , который содержит набор методов и список объектов City . Каждый объект City , в свою очередь, имеет набор методов и список объектов Population . Объекты Population не имеют собственного метода, они просто содержат атрибуты.

Мой вопрос касается последних Population объектов, которые я могу получить из объекта или создать как словари. Как это организовать наиболее эффективно?

Вот несколько случаев, которые иллюстрируют мои колебания:

Сохранение данных
Мне нужно иметь возможность сохранять и загружать моделирование, для чего я использую встроенный json ( Я хочу, чтобы данные были удобочитаемы). Поскольку программа организована в виде дерева, сохранение данных на каждом уровне может быть обременительным. В этом случае популяцию лучше всего вести в виде словаря, добавленного к списку совокупности как атрибут экземпляра City . Таким образом, сохранение - это просто передача экземпляра __ dict __ экземпляра City в Json.

Использование данных
Если я хочу манипулировать данными о населении, это проще как экземпляр класса, чем как словарь. Мало того, что синтаксис прост, но я также могу лучше наслаждаться функциями самоанализа во время кодирования.

Производительность
Наконец, я не уверен, что является наиболее эффективным с точки зрения ресурсов. В конечном итоге объект и словарь мало отличаются, поскольку каждый объект имеет атрибут __ dict __ , который может использоваться для доступа ко всем его атрибутам. Если я проведу симуляцию с большим количеством объектов Город и Население , что будет использовать меньше ресурсов: объекты или словари?

И снова, какой способ является наиболее эффективным. организовать данные в виде дерева? Словари или предметы предпочтительнее? Или есть какой-нибудь секрет организации деревьев данных?

5
задан Benjamin 19 June 2011 в 10:17
поделиться