我有一个从数据库中的两个字段读取的值字典:字符串字段和数字字段.字符串字段是唯一的,因此这是字典的键.
我可以对键进行排序,但是如何根据值进行排序?
注意:我已阅读Stack Overflow问题如何按Python中字典的值对字典列表进行排序?并且可能可以更改我的代码以获得字典列表,但由于我不需要字典列表,我想知道是否有更简单的解决方案.
我有一个字典列表,并希望每个项目按特定的属性值排序.
考虑下面的数组,
[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
Run Code Online (Sandbox Code Playgroud)
排序时name,应该成为
[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的词典列表:
[{'price': 99, 'barcode': '2342355'}, {'price': 88, 'barcode': '2345566'}]
Run Code Online (Sandbox Code Playgroud)
我想找到min()和max()价格.现在,我可以使用带有lambda表达式的键(在另一篇SO文章中找到)轻松地对此进行排序,所以如果没有其他方法我就不会卡住.然而,从我所看到的,几乎总是在Python中有一个直接的方式,所以这是我学习更多东西的机会.
我目前从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)