如何对字典进行排序?

13 浏览
0 Comments

如何对字典进行排序?

我有一个像这样的字典结构:

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'}

如何实现?

0
0 Comments

问题的出现原因:在给定的字典中,需要按照键或者值的特定顺序对字典进行排序。

解决方法:可以使用Python的内置函数sorted()以及lambda表达式来对字典进行排序。具体步骤如下:

1. 使用items()方法将字典转换为一个包含键值对的列表。

2. 使用lambda表达式作为sorted()函数的key参数,指定排序的依据。例如,可以使用lambda x: x[1]['alfa']来按照字典中每个键值对的值中的'alfa'键进行排序。

3. 使用for循环遍历排序后的键值对列表,并打印出排序后的结果。

下面是使用上述方法对给定字典a进行排序的示例代码和输出结果:

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'})

通过以上步骤,我们成功地对字典a按照每个键值对的值中的'alfa'键进行了排序,并得到了排序后的结果。

0