按键值排序JSON数据

Pre*_*ter 6 python json list discogs-api

我目前从discogs API(mp3标签数据)获取JSON数据,并希望按键的值对结果进行排序.在这种情况下,我试图获取Guns n Roses歌曲的数据,输出有1988年作为第一个,而数据实际上有1987年的记录.我如何排序这些数据,以便我可以通过以下方式获取排序数据一年(奥尔德斯特到最新).下面的代码按键或值排序,但这不是我想要的.请帮忙.

import json
import urllib2
request = urllib2.Request('http://api.discogs.com/database/search?sort=year&sort_order=asc&artist=%22Guns+N%27+Roses%22&track=%22Sweet+Child+O%27+Mine%22&format_exact=Album&type=master')
request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
request.add_header('Content-Type','application/json')
response = urllib2.urlopen(request)
json_raw= response.readlines()
json_object = json.loads(json_raw[0])



for row in json_object['results']:
    try:
        from operator import itemgetter
        for k, v in sorted(row.items(), key=itemgetter(0)):
            print k, v
    except KeyError: 
        pass
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 13

您可以使用list-comprehension和sorted()函数:

# filter  json_object['results']  first, as some of the items are missing the key 'year'

In [33]: results = [x for x in json_object['results'] if 'year' in x]

In [34]: sorted(results, key=lambda x: x['year'])
Run Code Online (Sandbox Code Playgroud)

要么 :

In [79]: from operator import itemgetter

In [80]: sorted(results, key=itemgetter('year'))
Run Code Online (Sandbox Code Playgroud)