如何排序dict?

时间:2013-06-13 11:47:14

标签: python

我有这样的结构:

my_dict[object_1] = {'alfa': '1', 'beta': '2', 'etc': '3'}
my_dict[object_2] = {'alfa': '5', 'beta': '9', 'etc': '1'}
my_dict[object_3] = {'alfa': '7', 'beta': '3', 'etc': '3'}
my_dict[object_4] = {'alfa': '3', 'beta': 'a', 'etc': '2'}

我希望在关键'alfa'上排序,我希望得到这个:

my_dict[object_1] = {'alfa': '1', 'beta': '2', 'etc': '3'}
my_dict[object_4] = {'alfa': '3', 'beta': 'a', 'etc': '2'}
my_dict[object_2] = {'alfa': '5', 'beta': '9', 'etc': '1'}
my_dict[object_3] = {'alfa': '7', 'beta': '3', 'etc': '3'}

怎么做?

1 个答案:

答案 0 :(得分:5)

您可以迭代已排序的字典项 只要items()返回带有键值的元组列表,就可以先获取它,然后对其进行排序。

>>> a = {1: {'alfa': '1', 'beta': '2', 'etc': '3'},
         2: {'alfa': '5', 'beta': '9', 'etc': '1'},
         3: {'alfa': '7', 'beta': '3', 'etc': '3'}, 
         4: {'alfa': '3', 'beta': 'a', 'etc': '2'}}
>>> for k,v in sorted(a.items(), key=lambda x: x[1]['alfa']):
        print (k, v)
(1, {'etc': '3', 'beta': '2', 'alfa': '1'})
(4, {'etc': '2', 'beta': 'a', 'alfa': '3'})
(2, {'etc': '1', 'beta': '9', 'alfa': '5'})
(3, {'etc': '3', 'beta': '3', 'alfa': '7'})