很抱歉,以前是否已经问过这个问题,我读了一些主题,但到目前为止对我没有帮助。
我从软件API获得此JSON响应:
{
u 'code': 0, u 'message': u 'Found: 367', u 'objects': {
u 'ApplicationSolution::15056': {
u 'fields': {
u 'id': u '15056',
u 'name': u 'R'
},
u 'message': u '',
u 'code': 0,
u 'class': u 'ApplicationSolution',
u 'key': u '15056'
},
u 'ApplicationSolution::15758': {
u 'fields': {
u 'id': u '15758',
u 'name': u 'Z'
},
u 'message': u '',
u 'code': 0,
u 'class': u 'ApplicationSolution',
u 'key': u '15758'
},
u 'ApplicationSolution::15053': {
u 'fields': {
u 'id': u '15053',
u 'name': u 'E'
},
u 'message': u '',
u 'code': 0,
u 'class': u 'ApplicationSolution',
u 'key': u '15053'
},
u 'ApplicationSolution::15050': {
u 'fields': {
u 'id': u '15050',
u 'name': u 'C'
},
u 'message': u '',
u 'code': 0,
u 'class': u 'ApplicationSolution',
u 'key': u '15050'
},
}
我想用ApplicationSolution名称(对象> ApplicationSolution:xxxxx>字段>名称)对该响应进行排序。我尝试通过排序来做到这一点,但我没有找到正确的语法:(
有人可以帮助我吗?
非常感谢您!
答案 0 :(得分:1)
我首先将字典转换为2元组的列表,然后使用适当的字段对列表进行排序。它可以很简单(假设全局字典称为j
):
sorted([(k,v) for k,v in j['objects'].items()], key=(lambda x: x[1]['fields']['name']))
答案 1 :(得分:0)
如果d
是您的字典,那么
def fieldname((k, v)):
return v['fields']['name']
d['objects'] = list(sorted(d['objects'].items(), key=fieldname))
将原位进行。