📅  最后修改于: 2023-12-03 15:18:54.806000             🧑  作者: Mango
在Python中,字典是一种无序的数据类型。但是,有时可以需要按照键按升序或降序对字典进行排序。本文将介绍一些排序字典的方法。
使用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类,它是一个有序字典,支持按键排序。
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表达式来按键排序字典。
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}
以上就是几种按键排序字典的方法,可以根据需要选择适合自己的方法。