Seite 1 von 1
Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 05:54
von nathan6
Hallo,
ich hänge mal wieder bei einem Problem fest und komme nicht weiter.
Ich möchte gerne Objekte aus einer json Ausgabe löschen.
Und zwar soll alles gelöscht werden bis auf die TypeId.
- Inventory {
TypeId: "Building"
Item {
ItemId: "House"
Record {
BoughtCount: 0
EarnedCount: 1
}
}
}
Im Normalfall erledige ich das hiermit, aber in diesem Fall bekomme ich einen Attribute Fehler.
Ich komm nicht drauf wo diesmal mein Denkfehler liegt.
Code: Alles auswählen
idx2del = []
for item in self.mState.Inventory:
for idx in item.Item:
idx2del.insert(0, idx)
for idx in idx2del:
del it.Item[idx]
Gruß
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 06:07
von mutetella
@nathan6
Weshalb möchtest Du so umständlich alles um den Schlüssel 'TypeId' herum löschen anstatt einfach den Wert hinter 'TypeId' abzurufen?
Code: Alles auswählen
In [2]: inventory = {
'TypeId': "Building",
'Item': {
'ItemId': "House",
'Record': {
'BoughtCount': 0,
'EarnedCount': 1,
}
}
}
In [3]: inventory
Out[3]:
{'Item': {'ItemId': 'House', 'Record': {'BoughtCount': 0, 'EarnedCount': 1}},
'TypeId': 'Building'}
In [4]: inventory['TypeId']
Out[4]: 'Building'
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 06:53
von nathan6
Ich weiß wie ich die Werte Abrufe. Der Grund ist einfach das bei möglichen 5000 Einträgen unübersichtlich und zu groß wird.
Wie gesagt die Werte abrufen ist kein Problem, aber sobald ich versuche Objekte zu löschen bekomm ich Fehlermeldungen.
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 08:25
von Sirius3
@nathan6: wo Du einen Fehler machst, kann Dir hier niemand sagen, weil Dein Code absolut unverständlich ist. Erstmal unbekannt Objekte. self.mState.Inventory scheint eine Liste zu sein, aber was für einen Typ hat item? Was ist dann item.Item? Eine Liste mit Indizes? Von Deiner Beschreibung her sollte das eigentlich ein Wörterbuch sein? Was ist `it`?
Warum füllst Du die Liste von vorne und nicht wie üblich per append von hinten? Warum wird idx2del nur vor der äußersten Schleife initialisiert? Und wo wird zwischen TypeId und den restlichen Keys unterschieden?
Die Lösung hat ja mutetella schon angedeutet, einfach ein neues Wörterbuch mit dem gewünschten Key erzeugen:
Code: Alles auswählen
for item in self.mState.Inventory:
item.Item = {'TypeID': item.Item['TypeID']}
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 08:27
von BlackJack
@nathan6: Es ist halt wesentlich einfacher einen Wert abzufragen als alle anderen zu löschen. Daten aus Listen oder Wörterbüchern zu löschen ist eher ungewöhnlich. Normalerweise erstellt man einfach eine neue Datenstruktur ohne die unerwünschten Werte.
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 18:24
von nathan6
Ha ich habs, ich wusste doch das mein Code funktioniert, ich musste nur einen Schlüssel tiefer gehen um die Übergeordneten zu löschen.
- Inventory {
TypeId: "DateBuilding"
}
Trotzdem Danke an alle
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 18:48
von mutetella
Weiß nicht… manchmal komm' ich mir irgendwie verkackeiert vor…

Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 18:54
von nathan6
mutetella hat geschrieben:Weiß nicht… manchmal komm' ich mir irgendwie verkackeiert vor…

Lol, brauchste nicht. Ich mach das nicht mit Absicht. Mein Gehirn braucht nur immer 10mal solang bis es Klick macht

Aber so lange kann ich nicht warten
Re: Objekte aus json löschen
Verfasst: Donnerstag 12. Mai 2016, 20:21
von snafu
mutetella hat geschrieben:Weiß nicht… manchmal komm' ich mir irgendwie verkackeiert vor…

Daran gewöhnt man sich nach einer Weile, wenn man regelmäßig Programmieranfängern hilft. Manche wollen oder können ganz einfach keine Lösungen verstehen, die nicht ihrem Denkmuster entsprechen. Wenn der OP mit seiner eigenen Lösung glücklich ist und ihm alles andere zu zeitaufwändig ist, dann müssen wir "Profis" eben damit leben...
