
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']]