详解Python 字典排序

  • Post category:Python

当我们需要按照某种顺序对字典中的键或值进行排序时,Python 提供了一些有用的函数和方法来帮助我们实现这个功能。

Python 字典排序基础

在Python中,字典是一种无序的键/值数据结构。字典中的键和值是任意对象,并且不会按照任何特定的顺序排列。但是,我们可以使用Python内置的sorted()函数和字典的items()方法来对字典中的键或值进行排序。

假设我们有一个字典,其中包含一些学生的成绩信息:

score_dict = {'Alice': 90, 'Bob': 80, 'Charlie': 70, 'David': 85}

对字典的键进行排序

要按键值对进行排序,我们可以使用Python内置的sorted()函数和字典的items()方法。items()方法返回字典中每个键和相应值的元组。然后,我们可以使用sorted()函数按照键来排序元组。最后,我们可以将排好序的元组转换回字典。

# 按照键对字典进行排序
sorted_dict = dict(sorted(score_dict.items(), key=lambda x: x[0]))

# 打印排序后的结果
print(sorted_dict)

输出如下:

{'Alice': 90, 'Bob': 80, 'Charlie': 70, 'David': 85}

上面的代码中,我们使用了lambda表达式作为sorted()函数的key参数,来指定按照字典的键排序。

对字典的值进行排序

同样地,我们可以按照字典的值对字典进行排序。我们可以使用sorted()函数和字典的items()方法来按照值来排序元组,然后将排好序的元组转换回字典。

# 按照值对字典进行排序
sorted_dict = dict(sorted(score_dict.items(), key=lambda x: x[1]))

# 打印排序后的结果
print(sorted_dict)

输出如下:

{'Charlie': 70, 'Bob': 80, 'David': 85, 'Alice': 90}

上述代码中,我们使用了lambda表达式作为sorted()函数的key参数,来指定按照字典的值排序。

Python 字典排序示例

# 构造一个字典
dict1 = {'c': 1, 'a': 2, 'b': 3}
print(f'原字典:{dict1}')

# 以字典的键进行排序并输出结果
dict2 = dict(sorted(dict1.items(), key=lambda item: item[0]))
print(f"按字典的键排序后的字典:{dict2}")

# 以字典的值进行排序并输出结果
dict3 = dict(sorted(dict1.items(), key=lambda item: item[1]))
print(f"按字典的值排序后的字典:{dict3}")

输出如下:

原字典:{'c': 1, 'a': 2, 'b': 3}
按字典的键排序后的字典:{'a': 2, 'b': 3, 'c': 1}
按字典的值排序后的字典:{'c': 1, 'a': 2, 'b': 3}

上述代码中,我们首先构造了一个字典,然后使用sorted()函数和items()方法,按照字典的键和值对字典进行排序,并将排序后的结果转换回了字典。