在python中排序多级dict

时间:2012-08-18 16:47:52

标签: python sorting dictionary

我需要按'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, ...}, 
    ...
}

我还没有找到一个好方法。任何建议都表示赞赏。

谢谢。

2 个答案:

答案 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将对其进行排序。