Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich möchte eine Liste von Dictionaries in einer Liste von Klasseninstanzen konvertieren.
Leider habe ich keinen Einfluss auf die Struktur der Eingangsdaten.
Ich habe diese etwas umständliche Lösung gefunden (generisches Beispiel):
from dataclasses import dataclass
@dataclass
class Item:
key: str
value: str
data = [
{"key1": "value1"},
{"key2": "value2"},
{"key3": "value3"},
]
items = [Item(*next((key,value) for key, value in item.items())) for item in data]
Daher die Frage: Kennt jemand eine Möglichkeit das eleganter zu lösen?
Danke für den Vorschlag. Das ist zwar möglich, wegen des destruktiven Verhaltens, (in diesem Fall) aber nicht anwendbar.
Mal abgesehen davon, ... Ich weiß zwar nicht seit wann es pop() in Python gibt, aber ich kann mir eigentlich nur vorstellen, dass es von Anfang an drin war. Denn als "Sprachverbesserung" wäre es wahrscheinlich immer abgeschmettert worden.
Kennt jemand die Geschichte? Wie findet man eigentlich am schnellsten heraus, wann was zu Python hinzugefügt wurde, ohne sich durch alle Releasenotes lesen zu müssen?
@rogerb: bei Dingen, die nicht "schon immer" da waren, findet man in der Dokumentation den Hinweis, ab welcher Version z.B. eine Funktion existiert.
Bei popitem steht die Begründung gleich mit dabei, da sich wohl so manche (wie Du) gefragt haben dürfte, warum es das gibt.
Das ist aber auch nicht viel besser
Bei deinem Code kommt es zu einer Exception, wenn das Dict mehr als ein Key-Value paar hat. Bei meinem Code wird das letzte hinzugefügte Key-Value-Paar ausgegeben, egal wie viele Keys enthalten sind.
Sirius3 hat geschrieben: Sonntag 10. Oktober 2021, 11:44
Ich würde behaupten, das ist ein Vorteil. Bei mehr als einem Key macht die Dataklasse keinen Sinn.
Einmal das und außerdem ist die ursprüngliche Datenstruktur ja dummerweise eine Liste in der jedes Element aus jeweils nur einem Key-Value-Pair besteht.