2

我有这样结构的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'}

我想在关键的'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'}

怎么做?

4

1 回答 1

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'})
于 2013-06-13T11:55:51.833 回答