详解python的sorted函数对字典按key排序和按value排序

  • Post category:Python

排序是计算机程序中经常用到的操作之一。在 Python 中,sorted() 是可用于排序的内置函数。在处理字典时,我们可以使用 sorted 函数来对字典按 key 或 value 进行排序。下面详细介绍一下如何使用 sorted 对字典进行排序。

sorted 函数的用法

sorted 函数的基本用法为:sorted(iterable, key=None, reverse=False)

其中:

  • iterable 表示待排序的可迭代对象。
  • key 是用来指定排序标准的函数,可以根据函数的返回值来确定排序方式。如果不指定 key,则 sorted 会默认按照元素的大小排序。
  • reverse 用于控制是否倒序排序,默认值为 False。

根据字典的 key 排序

我们可以使用 sorted 函数对字典按照 key 进行排序,这里的 key 就是字典的键。下面是一些示例以及说明:

示例 1

d = {'c': 1, 'a': 3, 'b': 2}
sorted_d = sorted(d.items())
print(sorted_d)

输出结果为:

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

这里我们使用 d.items() 来取出字典中的所有键值对,然后返回的结果是一个列表,我们再使用 sorted() 来对其排序。因为 sorted 函数默认根据元素的大小进行排序,所以这里默认使用了键来进行排序。最终的输出结果是按照字母表顺序排列的。

示例 2

d = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
sorted_d = dict(sorted(d.items(), key=lambda x: x[0]))
print(sorted_d)

输出结果为:

{'four': 4, 'one': 1, 'three': 3, 'two': 2}

这里我们使用 d.items() 来取出字典中的所有键值对,然后使用 sorted 函数对其进行排序。我们还指定了 key 参数,使用了一个 lambda 函数,根据键的字母表顺序来进行排序。最后将排序后的结果转换成了字典。

根据字典的 value 排序

如果我们想要将字典按照值进行排序,可以使用 key 参数指定一个 lambda 函数,用于返回字典中的每个值。下面同样给出示例:

示例 1

d = {'c': 1, 'a': 3, 'b': 2}
sorted_d = dict(sorted(d.items(), key=lambda x: x[1]))
print(sorted_d)

输出结果为:

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

这里我们使用 d.items() 来取出字典中的所有键值对,然后使用 sorted 函数对其进行排序。我们指定了 key 参数,使用了一个 lambda 函数,根据值来进行排序。最后将排序后的结果转换成了字典。

示例2

d = {'one': 1, 'two': 2, 'three': 3, 'four': 4}
sorted_d = dict(sorted(d.items(), key=lambda x: x[1], reverse=True))
print(sorted_d)

输出结果为:

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

这里我们同样使用了一个 lambda 函数,根据值来进行排序。同时我们还指定了 reverse 参数为 True,用于倒序排序。

总结一下,通过使用 sorted 函数和指定 key 参数,我们可以按照字典的 key 或 value 进行排序。在使用过程中需要注意指定 key 参数的规则,并且还可以使用 reverse 参数进行倒序排序。