Listen und Dictionarys umwandeln
Verfasst: Mittwoch 8. Februar 2023, 21:01
Hallo, ich würde gerne eure Meinung hören zu folgenden Programm, also ob man sie noch etwas kompakter formulieren kann, aber ohne importierte Module, beziehungsweise ob sie im Großen und Ganzen die jeweilige Aufgabenstellung gut erfüllen (Ich bin frischer Anfänger). Bei der Lösung musste ich mich auf elementare Programmiermethoden beschränken, also auf gewöhnliche Schleifen etc. 
1a) Implementieren Sie eine Funktion listToDict(a, k), die eine Tabelle a, also eine Liste von Listen, und einen Index k als Argumente erwartet und die Tabelle in ein Dictionary umwandelt, wobei die k-te Spalte als Schlüssel interpretiert wird. Meine Lösung:
b) Implementieren Sie eine Funktion dictToList(d, k), die ein Dictionary d und einen Index k als Argumente erwartet und eine Tabelle (Liste von Listen) mit allen Einträgen des Dicitonaries liefert, wobei der Schlüssel in die k-te Spalte eingetragen werden soll. Man darf davon ausgehen, dass es sich bei den Einträgen in dem Dictionary um Listen handelt. Meine Lösung:

1a) Implementieren Sie eine Funktion listToDict(a, k), die eine Tabelle a, also eine Liste von Listen, und einen Index k als Argumente erwartet und die Tabelle in ein Dictionary umwandelt, wobei die k-te Spalte als Schlüssel interpretiert wird. Meine Lösung:
Code: Alles auswählen
def listToDict(a, k):
# Erstellen von Dictionary und Liste, die die Elemente der k-ten Spalte enthält
dc = {}
l = []
# Entfernen der k-ten Spalte der Tabelle und Hinzufügen dieser in eine separate Liste,
# die damit die Schlüssel des Dictionarys enthält
for i in range(len(a)):
l.append(a[i][k])
a[i].remove(a[i][k])
# jedem Schlüssel, also i-tem Element der sep. Liste, die restliche i-te Liste aus a zuordnen
for i in range(len(l)):
dc[l[i]] = a[i]
return dc
# Testprogramm
a = [["Mustermann", "Max", 1234],["Exemplaris", "Emilie", 7890]]
b = [["Mustermann", "Max", 1234, 'Berlin'],["Exemplaris", "Emilie", 7890, 'Kiel'],
["Richter", "Horst", 4444, 'München']]
d = listToDict(a, 2)
print(d) # Ausgabe {1234: ['Mustermann', 'Max'], 7890: ['Exemplaris', 'Emilie']}
d2 = listToDict(b,1)
print(d2) # Ausgabe {'Max': ['Mustermann', 1234, 'Berlin'], 'Emilie': ['Exemplaris', 7890, 'Kiel'], 'Horst': ['Richter', 4444, 'München']}
Code: Alles auswählen
def dictToList(d, k):
# leere Liste, in die die Dictionary-Einträge eingetragen werden
l = []
# fügen jeden Dictionary-Wert zur Liste hinzu
for wert in d.values():
l.append(wert)
# erstellen eine Liste mit allen Schlüsseln
key_list = []
for wert in d.keys():
key_list.append(wert)
# fügen jeder Tabellenzeile an der k-ten Stelle den jeweiligen Schlüssel hinzu mit insert()
for i in range(len(key_list)):
l[i].insert(k,key_list[i])
return l
# Testprogramm
d = {1234: ["Mustermann", "Max"], 7890: ["Exemplaris", "Emilie"]}
a = dictToList(d, 1)
print(a) # Ausgabe [['Mustermann', 1234, 'Max'], ['Exemplaris', 7890, 'Emilie']]