📜  按值排序字典然后按键 (1)

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

按值排序字典然后按键

在 Python 中,我们可以使用内置的 sorted 函数对字典进行按值或按键排序。此外,Python 的 collections 模块也提供了 OrderedDict 类,可以创建有序字典,对其进行排序则相对更加容易。

按值排序

我们可以使用 sorted 函数的 key 参数来指定排序的方式。对于字典而言,我们可以将其转换为(键,值)元组的列表,然后根据值进行排序。

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

# 按值排序
sorted_d = sorted(d.items(), key=lambda x: x[1])

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

在上面的例子中,我们使用了 lambda 表达式指定按值排序,并将排序结果存储在 sorted_d 中。

按键排序

如果我们想要按键排序,那么我们只需要将 sorted 函数中的 key 函数改为返回键即可。

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

# 按键排序
sorted_d = sorted(d.items(), key=lambda x: x[0])

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

在上述代码中,我们将 lambda 表达式中的 x[1] 改为 x[0],表示按键排序。排序结果存储在 sorted_d 中。

使用 OrderedDict 进行排序

另外,我们还可以使用 collections 模块提供的 OrderedDict 类来创建有序字典。

from collections import OrderedDict

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

# 创建有序字典
ordered_d = OrderedDict(sorted(d.items()))

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

在上面的代码中,我们首先使用 sorted 函数对 d.items() 进行排序,然后使用 OrderedDict 类创建有序字典。最终结果存储在 ordered_d 中。

综上所述,我们可以使用 sorted 函数或 OrderedDict 类来对字典进行排序,根据需要选择不同的方法即可。