详解Python 字典排序

  • Post category:Python

Python中的字典是一种无序的键/值对集合数据类型,如果需要按照某种特定的顺序来排序,可以使用Python的内置方法和库函数进行操作。下面是Python字典排序操作的完整攻略:

1. 使用sorted()函数

使用sorted()函数可以通过字典的键或者值进行排序。

1.1 按键排序

通过指定key参数,可以按字典的键进行排序。示例代码如下:

>>> d = {'apple': 10, 'banana': 5, 'orange': 20, 'mango': 15}
>>> sorted_dict = sorted(d.items(), key=lambda x: x[0])
>>> print(sorted_dict)
[('apple', 10), ('banana', 5), ('mango', 15), ('orange', 20)]

对字典d调用items()方法可以获取字典中所有的键/值对,对items()方法返回的键/值对列表进行排序,指定key参数为lambda函数,这个函数返回键值对中的第一个元素,也就是键。这样就实现了按键进行排序。

1.2 按值排序

通过指定key参数,可以按字典的值进行排序。示例代码如下:

>>> d = {'apple': 10, 'banana': 5, 'orange': 20, 'mango': 15}
>>> sorted_dict = sorted(d.items(), key=lambda x: x[1])
>>> print(sorted_dict)
[('banana', 5), ('apple', 10), ('mango', 15), ('orange', 20)]

指定key参数为lambda函数,这个函数返回键值对中的第二个元素,也就是值。这样就实现了按值进行排序。

2. 使用collections.OrderedDict

使用collections.OrderedDict可以按照添加顺序对字典进行排序,这种方式不是按键或者值排序,而是按照添加顺序排序。

示例代码如下:

>>> from collections import OrderedDict
>>> d = {'banana': 5, 'apple': 10, 'orange': 20, 'mango': 15}
>>> sorted_dict = OrderedDict(sorted(d.items()))
>>> print(sorted_dict)
OrderedDict([('apple', 10), ('banana', 5), ('mango', 15), ('orange', 20)])

先使用sorted()函数对字典进行排序,然后使用OrderedDict将排序后的结果转换成有序字典。

通过使用sorted()函数或者collections.OrderedDict,可以很方便地对Python字典进行排序。