sparrow hat geschrieben: ↑Dienstag 21. Mai 2019, 10:58
@Jangie: Wie gesagt, zeig reale Daten, so wie sie in deiner Struktur vorliegen, und zeig, wie sie am Ende aussehen in Tabellenform aussehen sollen. Keine Platzhalter oder Dummy-Werte und alle Berechnungen bereits abgeschlossen und in den Daten enthalten.
Denn die Berechnung und die Ausgabe sind zwei unterschiedliche Teilprobleme.
Ich habe folgende Daten in einer .txt vorliegen:
Code: Alles auswählen
Montag 17.30 True
Dienstag 16.30 True
Mittwoch 15.30 True
Donnerstag 14.30 True
Freitag 13.30 True
Samstag 12.30 True
Sonntag 11.30 True
Sonntag 17.30 False
Samstag 16.30 False
Freitag 15.30 False
Donnerstag 14.30 False
Mittwoch 13.30 False
Dienstag 12.30 False
Montag 11.30 False
Donnerstag 16.30 False
Montag 17.30 False
Dienstag 16.30 False
Mittwoch 15.30 False
Donnerstag 14.30 False
Freitag 13.30 False
Samstag 12.30 False
Sonntag 11.30 False
Sonntag 17.30 True
Samstag 16.30 True
Freitag 15.30 True
Donnerstag 14.30 True
Mittwoch 13.30 True
Dienstag 12.30 True
Montag 11.30 True
Donnerstag 16.30 True
Samstag 11.25 True
Samstag 11.25 True
diese lese ich in ein Dictionary ein, eingelesen sieht es folgendermaßen aus:
Code: Alles auswählen
{('Montag', '17.30'): [True, False], ('Dienstag', '1
6.30'): [True, False], ('Mittwoch', '15.30'): [True, False], ('Donnerstag', '14.
30'): [True, False, False, True], ('Freitag', '13.30'): [True, False], ('Samstag
', '12.30'): [True, False], ('Sonntag', '11.30'): [True, False], ('Sonntag', '17
.30'): [False, True], ('Samstag', '16.30'): [False, True], ('Freitag', '15.30'):
[False, True], ('Mittwoch', '13.30'): [False, True], ('Dienstag', '12.30'): [Fa
lse, True], ('Montag', '11.30'): [False, True], ('Donnerstag', '16.30'): [False,
True], ('Samstag', '11.25'): [True,True]})
Meine Ausgabe soll folgendermaßen aussehen:
Code: Alles auswählen
Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag
0 0 0 0 0 100 0 11.25
50 0 0 0 0 0 50 11.30
0 50 0 0 0 50 0 12.30
0 0 50 0 50 0 0 13.30
0 0 0 50 0 0 0 14.30
0 0 50 0 50 0 0 15.30
0 50 0 50 0 50 0 16.30
50 0 0 0 0 0 50 17.30
Auf der X-Achse sind alle Tage die in der .txt vorkommen nebeneinander dargestellt. Das bekomme ich hin mit
Code: Alles auswählen
WOCHENTAGE = {0: "Montag",
1: "Dienstag",
2: "Mittwoch",
3: "Donnerstag",
4: "Freitag",
5: "Samstag",
6: "Sonntag"}
set_for_day = set()
for k, v in testdict.items():
set_for_day.add(k[0])
order = list(WOCHENTAGE.values())
for day in sorted(set_for_day, key = lambda x: order.index(x)):
print(f"{day} ", end ="")
(Das dict WOCHENTAGE habe ich drin, weil ich damit über das Datum den Wochentag ermittle)
Auf der Y-Achse sind die Uhrzeiten die in der .txt vorkommen (es kann auch mal 11:33 Uhr oder 18:48 Uhr sein , also es wird nicht in festen Abständen gemessen) untereinander dargestellt.
In der Zeile 11:30 und der Spalte Montag steht dann 50, weil einmal True und ein mal False vorkommt, also das Verhältnis im Prozenwert (im Vergleich dazu Zeile 11.25 und Spalte Samstag 100, weil dort beide werte True sind, es sind aber nicht immer nur zwei Werte (True/False) sonder eine varaible Anzahl von Werten möglich.
Was ich bis jetzt habe ist, dass ich die Wochentage in der X-Achse nebeneinander ausgeben kann (siehe oben)
Die Uhrzeiten gebe ich untereinander aus mit:
Code: Alles auswählen
set_for_time = set()
for k, v in testdict.items():
set_for_time.add(k[1])
for times in sorted(set_for_time):
print(f" {times}")