📌  相关文章
📜  Python|对字典进行排序(1)

📅  最后修改于: 2023-12-03 14:46:27.822000             🧑  作者: Mango

Python | 对字典进行排序

介绍

Python 中的字典(dict)是一种无序的键值对数据结构,可以用来存储和操作任意类型的对象。在某些场景下,我们需要按照键或者值的大小来对字典进行排序,这时候就需要用到 Python 中的排序算法。

本篇文章将介绍如何使用 Python 的内置函数和第三方库来对字典进行排序。

方法
方法一:使用 sorted() 函数

sorted() 函数是 Python 自带的内置函数,可以对任何可迭代对象进行排序,包括字典。

下面以按照字典元素的键升序排序为例,展示如何使用 sorted() 函数对字典进行排序:

# 原始字典
d = {'apple': 4, 'orange': 3, 'banana': 1, 'pear': 2}

# 对字典按照键的升序排序
d_sorted_by_key = dict(sorted(d.items(), key=lambda item: item[0]))

print(d_sorted_by_key)
# 输出结果:{'apple': 4, 'banana': 1, 'orange': 3, 'pear': 2}

代码解析:

  • sorted() 函数的第一个参数是一个可迭代对象(这里使用 d.items() 方法将字典转化为可迭代对象)。
  • sorted() 函数的第二个参数是一个可调用对象,这里使用了 lambda 函数,按照元素的键进行排序。
  • 最后使用 dict() 函数将排序后的可迭代对象转化为字典对象。

如果要按照字典元素的值进行排序,则只需要将 sorted() 函数的第二个参数改为按照值排序即可:

# 原始字典
d = {'apple': 4, 'orange': 3, 'banana': 1, 'pear': 2}

# 对字典按照值的升序排序
d_sorted_by_value = dict(sorted(d.items(), key=lambda item: item[1]))

print(d_sorted_by_value)
# 输出结果:{'banana': 1, 'pear': 2, 'orange': 3, 'apple': 4}

代码解析同上。

方法二:使用 operator 模块

除了使用 sorted() 函数外,我们还可以使用 Python 中的 operator 模块提供的函数对字典进行排序。operator 模块提供了多种函数用于操作 Python 内置数据类型和函数,其中包括对字典进行排序的函数 itemgetter()

下面以按照字典元素的键升序排序为例,展示如何使用 operator 模块对字典进行排序:

import operator

# 原始字典
d = {'apple': 4, 'orange': 3, 'banana': 1, 'pear': 2}

# 对字典按照键的升序排序
d_sorted_by_key = dict(sorted(d.items(), key=operator.itemgetter(0)))

print(d_sorted_by_key)
# 输出结果:{'apple': 4, 'banana': 1, 'orange': 3, 'pear': 2}

代码解析:

  • operator.itemgetter(0) 表示对元素的第一个值进行排序,即字典元素的键值。

如果要按照字典元素的值进行排序,则只需要将 operator.itemgetter(0) 改为 operator.itemgetter(1)

import operator

# 原始字典
d = {'apple': 4, 'orange': 3, 'banana': 1, 'pear': 2}

# 对字典按照值的升序排序
d_sorted_by_value = dict(sorted(d.items(), key=operator.itemgetter(1)))

print(d_sorted_by_value)
# 输出结果:{'banana': 1, 'pear': 2, 'orange': 3, 'apple': 4}

代码解析同上。

总结

本篇文章介绍了两种方法来对字典进行排序:使用 Python 中的内置函数 sorted() 和使用 operator 模块中的函数 itemgetter()

在实际应用中,我们需要根据具体的需求选择适合的排序方法,加深对 Python 数据结构的理解,提高代码的效率和易读性。