updated contents from Atlas repo
This commit is contained in:
31
functions/attrgetter_demo.rst
Normal file
31
functions/attrgetter_demo.rst
Normal file
@@ -0,0 +1,31 @@
|
||||
>>> metro_data = [
|
||||
... ('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
|
||||
... ('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
|
||||
... ('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
|
||||
... ('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
|
||||
... ('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
|
||||
... ]
|
||||
# BEGIN ATTRGETTER_DEMO
|
||||
|
||||
>>> from collections import namedtuple
|
||||
>>> LatLong = namedtuple('LatLong', 'lat long') # <1>
|
||||
>>> Metropolis = namedtuple('Metropolis', 'name cc pop coord') # <2>
|
||||
>>> metro_areas = [Metropolis(name, cc, pop, LatLong(lat, long_)) # <3>
|
||||
... 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 # <4>
|
||||
35.689722
|
||||
>>> from operator import attrgetter
|
||||
>>> name_lat = attrgetter('name', 'coord.lat') # <5>
|
||||
>>>
|
||||
>>> for city in sorted(metro_areas, key=attrgetter('coord.lat')): # <6>
|
||||
... print(name_lat(city)) # <7>
|
||||
...
|
||||
('Sao Paulo', -23.547778)
|
||||
('Mexico City', 19.433333)
|
||||
('Delhi NCR', 28.613889)
|
||||
('Tokyo', 35.689722)
|
||||
('New York-Newark', 40.808611)
|
||||
|
||||
# END ATTRGETTER_DEMO
|
||||
Reference in New Issue
Block a user