3

我需要按“sales_min”键的值对以下字典进行排序:

mydict = {
    'NATION': {'sales_max': 1000, 'sales_min': 500, ...}, 
    'LOCAL':  {'sales_max': 250, 'sales_min': 0, ...},
    'REGION': {'sales_max': 500, 'sales_min': 250, ...}, 
    ...
}

我还没有找到一个很好的方法来做到这一点。任何建议表示赞赏。

谢谢你。

4

2 回答 2

6
>>> 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})])
于 2012-08-18T16:51:31.780 回答
4

请注意,您实际上无法对字典进行排序,因为字典没有定义的顺序。但是您可以将其转换为排序列表:

sorted(mydict.items(), key = lambda x: x[1]['sales_min'])

他们 lambda 从items()列表中获取一个元素并返回销售最小值。通过将此函数作为关键参数传递,python 将按此排序。

于 2012-08-18T16:49:29.910 回答