Skip to content

Instantly share code, notes, and snippets.

@axelarge
Last active August 29, 2015 13:56

Revisions

  1. axelarge revised this gist Mar 1, 2014. 1 changed file with 4 additions and 3 deletions.
    7 changes: 4 additions & 3 deletions km_per_year.py
    Original file line number Diff line number Diff line change
    @@ -34,10 +34,11 @@ def max_odo(services):

    def km_per_year(data):
    sorted_data = sorted(data, key=operator.itemgetter("service_date"))
    by_year = list((y, list(v)) for y, v in groupby(sorted_data, get_year))
    zero = ("0000", [{"odometer": "0"}])
    by_year = list((year, max_odo(list(services))) for year, services in groupby(sorted_data, get_year))
    zero = ("0000", 0)
    zipped = izip([zero] + by_year, by_year)
    return [(year_hi, max_odo(services_hi) - max_odo(services_lo)) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]
    return [(year_hi, max_hi - max_lo) for (year_lo, max_lo), (year_hi, max_hi) in zipped]


    >>> km_per_year(DATA)
    [('2006', 8122), ('2007', 20714), ('2008', 8698), ('2009', 15038), ('2010', 7728), ('2011', 11149), ('2012', 29640), ('2013', 14290)]
  2. axelarge revised this gist Mar 1, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion km_per_year.py
    Original file line number Diff line number Diff line change
    @@ -37,7 +37,7 @@ def km_per_year(data):
    by_year = list((y, list(v)) for y, v in groupby(sorted_data, get_year))
    zero = ("0000", [{"odometer": "0"}])
    zipped = izip([zero] + by_year, by_year)
    return [(year_hi, get_odometer(services_hi[-1]) - get_odometer(services_lo[-1])) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]
    return [(year_hi, max_odo(services_hi) - max_odo(services_lo)) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]

    >>> km_per_year(DATA)
    [('2006', 8122), ('2007', 20714), ('2008', 8698), ('2009', 15038), ('2010', 7728), ('2011', 11149), ('2012', 29640), ('2013', 14290)]
  3. axelarge revised this gist Mar 1, 2014. 1 changed file with 5 additions and 4 deletions.
    9 changes: 5 additions & 4 deletions km_per_year.py
    Original file line number Diff line number Diff line change
    @@ -33,10 +33,11 @@ def max_odo(services):
    return get_odometer(services[-1])

    def km_per_year(data):
    sorted_data = sorted(data, key=itemgetter("service_date"))
    sorted_data = sorted(data, key=operator.itemgetter("service_date"))
    by_year = list((y, list(v)) for y, v in groupby(sorted_data, get_year))
    zipped = izip(by_year, by_year[1:])
    return [(year_hi, max_odo(services_hi) - max_odo(services_lo)) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]
    zero = ("0000", [{"odometer": "0"}])
    zipped = izip([zero] + by_year, by_year)
    return [(year_hi, get_odometer(services_hi[-1]) - get_odometer(services_lo[-1])) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]

    >>> km_per_year(DATA)
    [('2007', 20714), ('2008', 8698), ('2009', 15038), ('2010', 7728), ('2011', 11149), ('2012', 29640), ('2013', 14290)]
    [('2006', 8122), ('2007', 20714), ('2008', 8698), ('2009', 15038), ('2010', 7728), ('2011', 11149), ('2012', 29640), ('2013', 14290)]
  4. axelarge revised this gist Mar 1, 2014. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion km_per_year.py
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    from itertools import groupby, izip
    from operator import itemgetter

    DATA = [
    {"service_date": "2013-10-28", "odometer": "115379"},
    @@ -31,7 +33,7 @@ def max_odo(services):
    return get_odometer(services[-1])

    def km_per_year(data):
    sorted_data = sorted(data, key=operator.itemgetter("service_date"))
    sorted_data = sorted(data, key=itemgetter("service_date"))
    by_year = list((y, list(v)) for y, v in groupby(sorted_data, get_year))
    zipped = izip(by_year, by_year[1:])
    return [(year_hi, max_odo(services_hi) - max_odo(services_lo)) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]
  5. axelarge created this gist Mar 1, 2014.
    40 changes: 40 additions & 0 deletions km_per_year.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@

    DATA = [
    {"service_date": "2013-10-28", "odometer": "115379"},
    {"service_date": "2013-10-11", "odometer": "115050"},
    {"service_date": "2013-09-27", "odometer": "114410"},
    {"service_date": "2013-05-15", "odometer": "107936"},
    {"service_date": "2013-05-09", "odometer": "107534"},
    {"service_date": "2012-10-16", "odometer": "101089"},
    {"service_date": "2012-09-17", "odometer": "100316"},
    {"service_date": "2012-05-10", "odometer": "96505"},
    {"service_date": "2011-03-14", "odometer": "71449"},
    {"service_date": "2010-05-06", "odometer": "60300"},
    {"service_date": "2009-09-16", "odometer": "52572"},
    {"service_date": "2009-03-01", "odometer": "52815"},
    {"service_date": "2009-01-27", "odometer": "44982"},
    {"service_date": "2008-07-21", "odometer": "37534"},
    {"service_date": "2008-03-18", "odometer": "30331"},
    {"service_date": "2007-11-27", "odometer": "28836"},
    {"service_date": "2007-05-09", "odometer": "18726"},
    {"service_date": "2006-07-26", "odometer": "8122"},
    ]

    def get_year(service_entry):
    # return service_entry["service_date"].getYear()
    return service_entry["service_date"][:4]

    def get_odometer(service_entry):
    return int(service_entry["odometer"])

    def max_odo(services):
    return get_odometer(services[-1])

    def km_per_year(data):
    sorted_data = sorted(data, key=operator.itemgetter("service_date"))
    by_year = list((y, list(v)) for y, v in groupby(sorted_data, get_year))
    zipped = izip(by_year, by_year[1:])
    return [(year_hi, max_odo(services_hi) - max_odo(services_lo)) for ((year_lo, services_lo), (year_hi, services_hi)) in zipped]

    >>> km_per_year(DATA)
    [('2007', 20714), ('2008', 8698), ('2009', 15038), ('2010', 7728), ('2011', 11149), ('2012', 29640), ('2013', 14290)]