Python按键或值对字典进行排序

  • Post category:Python

下面是Python按键或值对字典进行排序的完整攻略,包括排序方法和代码示例说明:

1. 按键排序

针对字典的键(即key)进行排序的方法:

方式一:使用sorted函数

可以使用Python的内置sorted函数,通过传递字典的键作为排序依据来实现排序。具体的代码如下:

d = {"c": 3, "a": 1, "b": 2}
sorted_dict = {k: d[k] for k in sorted(d)}
print(sorted_dict)

这里使用sorted()函数进行排序,返回的是排序后的键的集合。然后可以通过字典推导式创建一个新的有序字典。

输出结果如下:

{'a': 1, 'b': 2, 'c': 3}

方式二:使用collections.OrderedDict类

Python的collections模块提供了一个OrderedDict类,它可以维护字典中元素的插入顺序。在创建OrderedDict时,可以使用Python的内置sorted函数按键进行排序。实现排序的代码如下:

from collections import OrderedDict

d = {"c": 3, "a": 1, "b": 2}
sorted_dict = OrderedDict(sorted(d.items(), key=lambda x: x[0]))
print(sorted_dict)

这里使用了lambda函数作为key函数,表示按字典键进行排序。

输出结果如下:

OrderedDict([('a', 1), ('b', 2), ('c', 3)])

2. 按值排序

针对字典的值进行排序的方法:

方式一:使用sorted函数

可以使用内置的sorted函数,传递字典的值作为排序依据,代码如下:

d = {"c": 3, "a": 1, "b": 2}
sorted_dict = dict(sorted(d.items(), key=lambda item: item[1]))
print(sorted_dict)

这里使用了lambda函数作为key函数,表示按字典值进行排序。

输出结果如下:

{'a': 1, 'b': 2, 'c': 3}

方式二:使用zip函数

可以使用zip函数,将字典的键和值反转到元组中,再进行排序。代码如下:

d = {"c": 3, "a": 1, "b": 2}
sorted_dict = {k: v for k, v in sorted(zip(d.keys(), d.values()), key=lambda item: item[1])}
print(sorted_dict)

这里使用了zip函数,将字典的键和值反转成元组;使用sorted函数进行排序;最后再将排序后的元组转换回字典的键和值。同样的,这里也使用了lambda函数作为key函数,表示按字典值进行排序。

输出结果如下:

{'a': 1, 'b': 2, 'c': 3}

以上就是Python按键或值对字典进行排序的完整攻略,通过这些方法,可以很方便地对字典按要求进行排序。