我需要按'sales_min'键的值对以下dict进行排序:
mydict = {
'NATION': {'sales_max': 1000, 'sales_min': 500, ...},
'LOCAL': {'sales_max': 250, 'sales_min': 0, ...},
'REGION': {'sales_max': 500, 'sales_min': 250, ...},
...
}
我还没有找到一个好方法。任何建议都表示赞赏。
谢谢。
答案 0 :(得分:5)
>>> collections.OrderedDict(sorted(mydict.iteritems(), key=lambda (k, v):
v['sales_min']))
OrderedDict([('LOCAL', {'sales_max': 250, 'sales_min': 0}), ('REGION', {'sales_max': 500, 'sales_min': 250}), ('NATION', {'sales_max': 1000, 'sales_min': 500})])
答案 1 :(得分:4)
请注意,您实际上无法对dict进行排序,因为dict没有已定义的顺序。但您可以将其转换为排序列表:
sorted(mydict.items(), key = lambda x: x[1]['sales_min'])
他们lambda从items()
列表中获取元素并返回销售最小值。通过将此函数作为关键参数传递,python将对其进行排序。