вложение с namedtuple

У меня проблемы с получением данных в той форме, в которой я хотел бы в python.

В основном у меня есть программа, которая считывает двоичные данные и предоставляет функции для построения и анализа этих данных.

В моих данных есть главные заголовки, а затем подзаголовки, которые могут быть любым количеством различных типов данных.

Я хотел бы иметь доступ к своим данным, например:

>>> a = myDatafile.readit()
>>> a.elements.hydrogen.distributionfunction
(a big array)
>>> a.elements.hydrogen.mass
1
>>> a.elements.carbon.mass
12

, но я не знаю имена атомов до времени выполнения.

Я пробовал использовать namedtuple, например, после того, как прочитал все имена атомов:

self.elements = namedtuple('elements',elementlist)

Где elementlist - это список строк, например ('водород', 'углерод'). Но проблема в том, что я не могу вложить их, используя, например:

for i in range(0,self.nelements):
    self.elements[i] = namedtuple('details',['ux','uy','uz','mass','distributionfunction'])

, а затем иметь доступ к значениям, например, через

self.elements.electron.distributionfunction.

Может быть, я делаю это совершенно неправильно. Я не очень разбираюсь в питоне. Я знаю, что это было бы легко сделать, если бы я не беспокоился о динамическом именовании переменных.

Надеюсь, я ясно дал понять, чего пытаюсь достичь!

9
задан lesmana 27 April 2012 в 09:38
поделиться