Code: Alles auswählen
#!/usr/bin/env python3
from collections import defaultdict
from statistics import mean, StatisticsError
DAY_NAMES = [
'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag',
'Freitag', 'Samstag', 'Sonntag'
]
LINES = '''\
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
'''.splitlines()
def main():
time2days = defaultdict(lambda: defaultdict(list))
for line in LINES:
day_name, time, flag = line.split()
time2days[time][day_name].append(flag == 'True')
column_gap = 2
time_column_width = 5
day_column_width = max(map(len, DAY_NAMES))
print(' ' * (time_column_width + column_gap), end='')
print(
(' ' * column_gap).join(
day_name.rjust(day_column_width)
for day_name in DAY_NAMES
)
)
for time, day_name2flags in sorted(time2days.items()):
row = [time.rjust(time_column_width)]
for day_name in DAY_NAMES:
try:
ratio = mean(day_name2flags[day_name])
except StatisticsError:
ratio = 0
row.append('{0:-{1}.2f}'.format(ratio, day_column_width))
print((' ' * column_gap).join(row))
if __name__ == '__main__':
main()
Code: Alles auswählen
Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag
11.25 0.00 0.00 0.00 0.00 0.00 1.00 0.00
11.30 0.50 0.00 0.00 0.00 0.00 0.00 0.50
12.30 0.00 0.50 0.00 0.00 0.00 0.50 0.00
13.30 0.00 0.00 0.50 0.00 0.50 0.00 0.00
14.30 0.00 0.00 0.00 0.50 0.00 0.00 0.00
15.30 0.00 0.00 0.50 0.00 0.50 0.00 0.00
16.30 0.00 0.50 0.00 0.50 0.00 0.50 0.00
17.30 0.50 0.00 0.00 0.00 0.00 0.00 0.50