如何排序dict?

Nip*_*ips 2 python

我有这样的结构dict:

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'}
Run Code Online (Sandbox Code Playgroud)

我希望在关键'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'}
Run Code Online (Sandbox Code Playgroud)

怎么做?

ole*_*leg 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'})
Run Code Online (Sandbox Code Playgroud)