使用itemgetter对dict列表进行排序

use*_*748 5 python

这是我的字典:

a = [{"id":1,"data":{"age":16,"name":a}}, 
     {"id":3,"data":{"age":35,"name":b}}, 
     {"id":2,"data":{"age":9,"name":c}}]
Run Code Online (Sandbox Code Playgroud)

我想按字段"年龄"对其进行排序.

lambda我使用:

sorted(a, key=lambda k: k['data']['age'])
Run Code Online (Sandbox Code Playgroud)

怎么做itemgetter

Ima*_*teh 3

你最好先给 "a"、"b" 和 "c" 添加引号,否则你会混淆 dict a 和 char "a"

a = [{"id":1,"data":{"age":16,"name":"a"}}, 
     {"id":3,"data":{"age":35,"name":"b"}}, 
     {"id":2,"data":{"age":9,"name":"c"}}]
Run Code Online (Sandbox Code Playgroud)

为了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)
Run Code Online (Sandbox Code Playgroud)