Sort dict list with itemgetter

Here is my dictionary:

a = [{"id":1,"data":{"age":16,"name":a}}, 
     {"id":3,"data":{"age":35,"name":b}}, 
     {"id":2,"data":{"age":9,"name":c}}]

I want to sort it by the "age" field.

With lambdaI use:

sorted(a, key=lambda k: k['data']['age'])

How to do this with itemgetter?

+4
source share
2 answers

It’s better to start by adding quotes to "a", "b" and "c", otherwise you will have confusion between dict a and char "a"

a = [{"id":1,"data":{"age":16,"name":"a"}}, 
     {"id":3,"data":{"age":35,"name":"b"}}, 
     {"id":2,"data":{"age":9,"name":"c"}}]

For itemgetter:

from operator import itemgetter

a = [{"id":1,"data":{"age":16,"name":"a"}}, 
     {"id":3,"data":{"age":35,"name":"b"}}, 
     {"id":2,"data":{"age":9,"name":"c"}}]

l=sorted(a, key = lambda k : itemgetter('age')(itemgetter('data')(k)) )

print (l)
+2
source

You can use this:

sorted(a, key = lambda k : itemgetter('age')(itemgetter('data')(k)) )

Outputs:

[{'data': {'age': 9, 'name': 'c'}, 'id': 2},
{'data': {'age': 16, 'name': 'a'}, 'id': 1},
{'data': {'age': 35, 'name': 'b'}, 'id': 3}]
0
source

All Articles