Skip to content

Instantly share code, notes, and snippets.

@luisenriquecorona
Created February 25, 2020 21:36
Show Gist options
  • Save luisenriquecorona/30d1482f8e919ff96add07b6c715f9fb to your computer and use it in GitHub Desktop.
Save luisenriquecorona/30d1482f8e919ff96add07b6c715f9fb to your computer and use it in GitHub Desktop.
Demo of attrgetter to process a previously defined list of namedtuple called metro_data
>>> from collections import namedtuple
>>> LatLong = namedtuple('LatLong', 'lat long') #
>>> Metropolis = namedtuple('Metropolis', 'name cc pop coord') #
>>> metro_areas = [Metropolis(name, cc, pop, LatLong(lat, long)) #
... for name, cc, pop, (lat, long) in metro_data]
>>> metro_areas[0]
Metropolis(name='Tokyo', cc='JP', pop=36.933, coord=LatLong(lat=35.689722, long=139.691667))
>>> metro_areas[0].coord.lat #
35.689722
>>> from operator import attrgetter
>>> name_lat = attrgetter('name', 'coord.lat') #
>>>
>>> for city in sorted(metro_areas, key=attrgetter('coord.lat')): #
... print(name_lat(city)) #
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment