Aus zwei mach eins, Elemente mit gleicher ID zusammen führen
Verfasst: Mittwoch 19. März 2014, 17:51
Hallo,
ich habe mir einen kleines Sortierprogramm ausgedacht. Gegeben ist eine Liste mit 6 Obst- und Gemüsesorten (meine IDs):
Rotkohl
Weiskohl
Apfel
Kartoffel
Zitrone
Birne
Zu jeder ID gibt es zwei Attribute - Farte mit Farbwert und Gewicht mit Gewichtswert.
Jedes Attribut befindet sich einzeln als Element in einer Liste mit der dazugehörigen ID:
[ID,Attribut1,Wert], [ID,Attribut2,Wert]
Ich möchte folgendes haben:
[ID,Attribut1,Wert,Attribut2,Wert]
Ich habe mir dazu ein kleines Programm ausgedacht, dass auch recht gut funktioniert:
Es gibt ja immer viele Lösungen und manchmal kann ein Programmieransatz zwar funktionieren, aber es kann ungünstig gelöst sein und bei langen ungeordneten Datenlisten mit vielleicht auch ungünstig sein. Es könnte ja auch sein, dass noch weitere Attribute hinzukommen, dann könnte ich zwar eine dritte for-Schleife einbauen, aber ich habe irgendwie Bauchschmerzen mit zu vielen ineinander verschachtelten for-Schleifen, auch die Sortierung der Reihenfolge der Attribute ist bei zwei Elementen eine einfache if-else-Bedingung, bei drei Attributen sieht das ganze schon anders aus - da muss ich dann mehr Möglichkeiten abtesten.
ich habe mir einen kleines Sortierprogramm ausgedacht. Gegeben ist eine Liste mit 6 Obst- und Gemüsesorten (meine IDs):
Rotkohl
Weiskohl
Apfel
Kartoffel
Zitrone
Birne
Zu jeder ID gibt es zwei Attribute - Farte mit Farbwert und Gewicht mit Gewichtswert.
Jedes Attribut befindet sich einzeln als Element in einer Liste mit der dazugehörigen ID:
[ID,Attribut1,Wert], [ID,Attribut2,Wert]
Ich möchte folgendes haben:
[ID,Attribut1,Wert,Attribut2,Wert]
Ich habe mir dazu ein kleines Programm ausgedacht, dass auch recht gut funktioniert:
Code: Alles auswählen
# Testprogramm Liste mit zwei Eigenschaften zusammenfuehren
Liste = ["Rotkraut,Farbe,gruen", "Weisskraut,Gewicht,16", "Rotkraut,Gewicht,30","Apfel,Gewicht,14","Kartoffel,Farbe,grau","Zitrone,Farbe,gelb","Birne,Gewicht,4",
"Weisskraut,Farbe,weiss","Zitrone,Gewicht,1","Kartoffel,Gewicht,23","Apfel,Farbe,gruen","Birne,Farbe,gruen"]
newList = []
i = 1
for k in Liste:
split_k = k.split (",")
for l in Liste[i:]:
split_l = l.split (",")
if split_k[0] == split_l[0]:
if split_k[1] == "Gewicht":
newString = split_k[0], split_k[1], split_k[2], split_l[1], split_l[2]
else:
newString = split_k[0], split_l[1], split_l[2], split_k[1], split_k[2]
newList.append(newString)
i = i+1
print newList