das print ist nicht so wichtig. ich brauche nur die werte als return.
Code: Alles auswählen
from itertools import groupby, imap
from operator import itemgetter
a = [(5224,"2005"),(5524,"2003"),(1524,"2005"),(554,"2008"),(5824,"2005"),(524,"2008")]
def datum_area(table):
s = sorted((int(year), area) for area, year in table)
data = {}
for k, g in groupby(s, itemgetter(0)):
data[k] = sum(imap(itemgetter(1), g))
years = sorted(data.keys())
max_area = sorted(data.iteritems(),
key=lambda elem: (elem[1], elem[0])
)[-1][0] # max and year
for year, text in [
(years[0], "earliest %d: %d"),
(years[-1], "oldest %d: %d"),
(max_area, "biggest area %d: %d")]:
print text % (year, data[year])
alt = years[0]
#area_alt = ?
gross = years[1]
#area_gross = ?
jung = years[2]
#area_jung = ?
area_full = sum(data.itervalues())
return area_full, alt, area_alt, gross, area_gross, jung, area_jung