Mam problemy z uzyskaniem moich danych w formie, którą chciałbym w python.zagnieżdżanie z namedtuple
Zasadniczo mam program, który odczytuje dane binarne i zapewnia funkcje do drukowania i analizy tych danych.
Moje dane mają główne nagłówki, a następnie podtytuły, które mogą być dowolną liczbą różnych typów danych.
Chciałbym być w stanie uzyskać dostęp do swoich danych, jak na przykład:
>>> a = myDatafile.readit()
>>> a.elements.hydrogen.distributionfunction
(a big array)
>>> a.elements.hydrogen.mass
1
>>> a.elements.carbon.mass
12
ale nie znam nazwy atomów aż do czasu wykonywania.
Próbowałem za pomocą namedtuple, na przykład po czytałem wszystkich nazw Atom:
self.elements = namedtuple('elements',elementlist)
Gdzie elementlist jest listą ciągów na przykład wodoru („”, „”) węgla. Ale problemem jest to, że nie mogą one gniazdo stosując na przykład:
for i in range(0,self.nelements):
self.elements[i] = namedtuple('details',['ux','uy','uz','mass','distributionfunction'])
a następnie być w stanie uzyskać dostęp do wartości poprzez np
self.elements.electron.distributionfunction.
Może robię to całkowicie błędne. Jestem dość niedoświadczony w python. Wiem, że byłoby to łatwe, gdybym nie miał problemu z dynamicznym nazywaniem zmiennych.
Mam nadzieję, że jasno wyjaśniłem, co próbuję osiągnąć!
Czy możesz pokazać nam przykładowe dane? – Abhijit
@abhijit Jest to dość skomplikowane i jest odczytywane jako dane binarne. liczba pierwiastków jest zmienna z pliku do pliku, ale każdy z elementów posiada: „nazwę (ciąg) masowe (podwójnej precyzji) ładowania (podwójnej precyzji) 3d prędkość siatki (3 * n * podwójnej precyzji) Siatka fazowa (n^6 * podwójna precyzja) ' Mam klasę, która odczytuje plik binarny i wczytuje go do zmiennych, ale mam problem z utworzeniem struktury danych, do której można uzyskać dostęp w sposób opisany przeze mnie. –