You are viewing a single comment's thread:

RE: Python / Problem: Die Katze beißt sich in den Schwanz

(edited)

also, ich habe sogar eine separate json Datei. Wobei mir manchmal der Mechanismus fremdartig vorkommt. (Ich schaffe es nicht, ohne expecting Value, oder ExtraData auszukommen, wenn ich keine Try except pass vorne hinstelle). Muss offenbar noch einige Dinge stärker für mich runterbrechen.

Hast du gmeint, ich soll den Counter bereits im Vorfeld in die Json Datei schreiben?
(also nicht durch einen Pyton Code)

Und ja, das wollte ich, (die Nummer in Json Code abspeichern), aber aus welchem Grund auch immer schaffe ich das nicht vernünftig. (Aber vielleicht eh, weil sie eben im Vorfeld noch nicht in der JSon Datei existiert hat.)

sry, falls das wirr klingt.


Nachtrag:

...
{ "counter" : 0,
"01.09.2023": [
"aaa",
"bbb"
],
"02.09.2023": [
"ccc",
"ddd"
]
}
...

Mir ist nicht klar, wie ich auf diesen Counter zugreifen kann in Python. Er existiert ja quasi im Code noch nicht.

0E-8 BEE
1 comments
(edited)

Genau, den counter vorher schon in die JSON-Datei schreiben. Für den counter legst du in python eine Variable an, die mit dem counterwert aus der JSON-Datei überschrieben wird.

Um an den counter zu kommen, überprüfst du, ob es in der JSON-Datei ein key mit dem Namen counter gibt. Wenn das der Fall ist, dann kannst du den value zu diesem key einlesen.

import json

# habe ich jetzt mal als string geschrieben.
jsondata = '''{ "counter" : 0,
"lebensmittel" : {
"01.09.2023": [
"aaa",
"bbb"
],
"02.09.2023": [
"ccc",
"ddd"
]
}
}'''

# variable die den counter speichert, der aber noch initialisiert werden muss
my_counter = None
my_lebensmittel = None

# parse den string/datei und erhalte das root-Element
rootElement = json.loads(jsondata)

# prüfe, ob der key mit dem Namen 'counter' existiert
if 'counter' in rootElement:
    my_counter = rootElement['counter']
else:
    raise ValueError('counter nicht gefunden')
print(my_counter)

# prüfe nun ob es den key 'lebensmittel' gibt
if 'lebensmittel' in rootElement:
    my_lebensmittel = rootElement['lebensmittel']
else:
    raise ValueError('lebensmittel nicht gefunden')

# lebensmittel dictionary
for k, v in my_lebensmittel.items():
    print(f'{k} -> {v}')

Edit Ich habe die JSON ein bisschen abgeändert, damit du neben den counter auch die Lebensmittel direkt als dictionary einlesen kannst. Dazu habe ich die Lebensmittel mit dem key "lebensmittel" verschachtelt um diese direkt als dictionary in my_lebensmittel speichern zu können. Ohne diesen neuen Key müsstest du die einzelnen Tage kennen die immer unterschiedlich sein können, also 01.09 als key, 02.09 als key usw.

0.00130290 BEE