📜  python dict 按键排序字典 - Python (1)

📅  最后修改于: 2023-12-03 15:18:54.806000             🧑  作者: Mango

Python字典排序

在Python中,字典是一种无序的数据类型。但是,有时可以需要按照键按升序或降序对字典进行排序。本文将介绍一些排序字典的方法。

使用sorted函数

使用Python的内置函数sorted()可以按键对字典进行排序。我们可以将字典的键提取出来,使用sorted()函数排序,然后根据排好序的键构建一个新的字典。

d = {'apple': 10, 'banana': 5, 'orange': 20, 'kiwi': 3}

# 按键升序排序
d_sorted = {k: d[k] for k in sorted(d)}

# 按键降序排序
d_sorted_desc = {k: d[k] for k in sorted(d, reverse=True)}

print(d_sorted)
print(d_sorted_desc)

输出结果:

{'apple': 10, 'banana': 5, 'kiwi': 3, 'orange': 20}
{'orange': 20, 'kiwi': 3, 'banana': 5, 'apple': 10}
使用collections.OrderedDict

collections模块提供了OrderedDict类,它是一个有序字典,支持按键排序。

from collections import OrderedDict

d = {'apple': 10, 'banana': 5, 'orange': 20, 'kiwi': 3}

# 按键升序排序
d_sorted = OrderedDict(sorted(d.items()))

# 按键降序排序
d_sorted_desc = OrderedDict(sorted(d.items(), reverse=True))

print(d_sorted)
print(d_sorted_desc)

输出结果:

OrderedDict([('apple', 10), ('banana', 5), ('kiwi', 3), ('orange', 20)])
OrderedDict([('orange', 20), ('kiwi', 3), ('banana', 5), ('apple', 10)])
使用lambda表达式

除了上面介绍的两种方法外,还可以使用lambda表达式来按键排序字典。

d = {'apple': 10, 'banana': 5, 'orange': 20, 'kiwi': 3}

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

# 按键降序排序
d_sorted_desc = dict(sorted(d.items(), key=lambda x: x[0], reverse=True))

print(d_sorted)
print(d_sorted_desc)

输出结果:

{'apple': 10, 'banana': 5, 'kiwi': 3, 'orange': 20}
{'orange': 20, 'kiwi': 3, 'banana': 5, 'apple': 10}

以上就是几种按键排序字典的方法,可以根据需要选择适合自己的方法。