Seite 1 von 1
Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 11:16
von pgpython
Hallo Zusammen,
ich möchte ein Dictionary in Python mit zwei Fremdschlüsseln (Primärschlüssel zweier anderer Dictionarys) als Tupel-Primärschlüssel ausstatten.
Hab keinen Schimmer, wie ich das anstellen soll. Ziel ist dann, mit einer Funktion Informationen aus allen drei Dicts zu holen und sie in eine geschachtelte Liste zu packen.
Hat einer da eine Idee???
Vielen Dank schon mal vorweg !!!
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 11:24
von BlackJack
@pgpython: Also wenn ich die Frage richtig verstanden habe, dann verstehe ich die Frage nicht, weil die doch eigentlich schon die Antwort enthält. Tupel können auch als Schlüssel verwendet werden, also kann man Tupel mit einem Paar von Werten verwenden, welche in zwei anderen Wörterbüchern als Schlüssel verwendet werden.
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 12:17
von pgpython
Vielleicht Hilft ein Beispiel aus den Dicts:
lehrer = {
11:{'name':'Braun','vorname':'Anton'},
15:{'name':'Meyer','vorname':'Bodo'}
}
schueler = {
216:{'name':'Bange','ort':'Adorf','plz':37073}
}
pruefung = {
....:{'l_id':11,'s_id':216,'typ':'mdl','note':4},
....:{'l_id':15,'s_id':216,'typ':'schrl','note':3}
}
Bei .... Suche ich den Primärschlüssel, der sich aus der l_id und der s-id zusammensetzt, sodass ich bei einer Anfragefunktion
eine geschachtelte Liste der Form [[S_ID1,S_Name1,Ergebnis1],[S_ID2,S_Name2,Ergebnis2],...] ausgegeben bekommen.
Vielleicht ist das jetzt eindeutiger.
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 12:20
von BlackJack
@pgpython: Der Schlüssel den Du suchst ist halt einfach ein Tupel mit den beiden Zahlen drin.
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 12:26
von pgpython
okay danke
und wie komme ich dann zur geschachtelten Liste ?
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 12:45
von BlackJack
@pgpython: Da die ”Fremdschlüssel” auch noch mal in den Werten von `pruefung` enthalten sind brauchst Du die Schlüssel dort eigentlich überhaupt nicht. Du erstellst eine neue Liste für das Ergebnis und schreibst einfach eine Schleife über die Werte von `pruefung` und für jeden Wert erstellst Du eine passende Liste mit den Daten und fügst die an die Ergebnisliste an. Geht auch einfach als „list comprehension” (ungetestet):
Code: Alles auswählen
joined = [[p['s_id'], schueler[p['s_id']], 42] for p in pruefung.itervalues()]
Als Ergebnis habe ich mal 42 eingesetzt, weil Du da nicht weiter beschrieben hast wie das aussehen soll.
Re: Dictionary Fremdschlüssel
Verfasst: Donnerstag 11. Dezember 2014, 12:48
von pgpython
mit Ergebnis ist 'Note' gemeint aus dem Dict pruefung