Wpis z mikrobloga

utworzylem liste: self.objects = ['dyrektor', 'nauczyciel', 'uczen']

i teraz tworzac obiekt chcialbym miec:
data = obj['dyrektor'] ['nauczyciel'] ['uczen']

potrzebuje tego do czytania z jsona.
nie wiem jak to teraz zapisac zeby z
['dyrektor', 'nauczyciel', 'uczen']
uzyskac
['dyrektor'] ['nauczyciel'] ['uczen'] ?

moga byc tez sytuacje ze
self.
objects = ['dyrektor', 'nauczyciel']
albo
self._objects = ['dyrektor', 'nauczyciel', 'uczen', 'wozny']

#naukaprogramowania #python
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

ref = obj

for title in self._objects:

....ref = ref[title]


@fidd27: dziala tylko mysle jak ( ͡° ͜ʖ ͡°) poczekaj, debugujac to po prostu zmniejsza coraz bardziej rozmiar listy wchodzac w jej kolejne podlisty tak?
  • Odpowiedz
@rosso_corsa: Rozważ zapis do słownika zamiast do tablicy. Wyszukiwanie elementów będzie wtedy wydajniejsze. Jeśli pracujesz na JSONie to słownik będzie lepszym wyborem. Wklejam kod (pomijam walidację) z kilkoma przykładami. Wyciąganie zmiennych poprzez wpisywanie numeracji indeksu na sztywno nie jest dobrym pomysłem.

Wykop nie czyta tabulacji, dlatego zaznaczam ją w kodzie poprzez #----#. Usuń je u siebie w staw pojedynczy tab.

import functools
from functools
  • Odpowiedz
@CipakKrulRzycia: myslalem o zapisie do slownika ale chyba jednak zostane przy liscie tylko bede musial ja przerobic odpuszczajac indeksy i wolajac po wartosci klucza.

splaszczanie jsona to chyba nie najlepszy pomysl. nie wiem jak sie pozniej odwolac do klucza ktory z "Andrzej" zmieni sie na "Dyrektor.Andrzej" no chyba ze bym stringi dodawal. Myslalem bardziej zeby zrobic to tak:
  • Odpowiedz
@rosso_corsa: Zakładam, że w takim razie listy mogą być wielokrotnie zagnieżdżone i nie znasz kolejności elementów, ale słowo klucz jest na początku. W takim wypadku możesz zrobić proste dopasowanie indeksów i dalej wołać zmienne po tych indeksach.

# więcej w dokumentacji --> https://docs.python.org/3/tutorial/datastructures.html
# założenie, że kluczowe słowo stoi na pierwszym miejscu w [], inaczej musisz robić walidację

teachers =
  • Odpowiedz