3

I need to sort the following dict by value of the 'sales_min' key:

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

I haven't found a good way to do it. Any suggestion is appreciated.

Thank you.

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

dict には順序が定義されていないため、実際には dict をソートできないことに注意してください。ただし、それをソート済みリストに変換できます。

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

ラムダはitems()リストから要素を取得し、売上の最小値を返します。この関数をキー パラメータとして渡すことで、Python はそれでソートします。

于 2012-08-18T16:49:29.910 に答える