如何对字典进行排序?
如何对字典进行排序?
我有一个像这样的字典结构:
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'}
如何实现?
问题的出现原因:在给定的字典中,需要按照键或者值的特定顺序对字典进行排序。
解决方法:可以使用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'键进行了排序,并得到了排序后的结果。