如何在 Python 中按键对字典排序
Azaz Farooq
2023年1月30日
2020年10月27日
-
Python 用
dict.keys()
方法对字典按键排序 -
Python 用
dict.items()
方法按键对字典进行排序 -
Python 用
OrderedDict()
方法按 key 对字典进行排序 - Python 按反向顺序对字典进行排序
-
Python 用自定义
key
函数方法排序字典
Python 字典和哈希表一样,通过评估键的哈希值来保存条目,条目的顺序是无法预测的。本文将介绍如何在 Python 中按键对字典进行排序。
Python 用 dict.keys()
方法对字典按键排序
让我们以下面的字典为例。
dict={"hello":56, "at":23,"test":43,"this":43}
dict.keys()
的输出是
dict_keys(['hello', 'at', 'test', 'this'])
我们可以从这个无序的键列表中创建一个新的、有序的字典。
sorted(dict.keys())
输出:
['at', 'hello', 'test', 'this']
通过从字典中选择每个条目,我们可以对该排序列表重复进行排序。
for key in sorted(dict.keys()) :
print(key , " :: " , dict[key])
输出:
at :: 23
hello :: 56
test :: 43
this :: 43
Python 用 dict.items()
方法按键对字典进行排序
我们也可以在 Python 中用 dict.items()
方法按键对一个字典进行排序。
它将生成一个包含键值对的列表?
dict.items()
输出:
dict_items([('hello', 56), ('at', 23), ('test', 43), ('this', 43)])
我们可以通过下面的函数生成一个排列好的列表。它将根据键值对字典的条目进行排序。
sorted(dict.keys())
输出:
['at', 'hello', 'test', 'this']
现在,为了从字典中产生排序键值对,我们使用以下代码。
for elem in sorted(dict.items()) :
print(elem[0] , " ::" , elem[1])
输出:
at :: 23
hello :: 56
test :: 43
this :: 43
在复杂性方面,它比前面的方法更强大。因为我们在对可迭代列表进行排序后,不需要像 dict.key()
那样检查键值。
Python 用 OrderedDict()
方法按 key 对字典进行排序
另外,我们也可以使用 collections
模块对字典元素进行键值排序。
import collections
d = {2:13, 1:9, 4:25, 3:0}
result = collections.OrderedDict(sorted(d.items()))
print(result)
输出:
OrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])
Python 按反向顺序对字典进行排序
之前,我们按升序对字典项进行了排序。现在我们讨论一些按降序排列字典项的方法。
语法为:
sorted(iterable_sequence, reverse=True)
以下代码对字典项进行排序和反转。
dict={"hello":56,"at":23,"test":43,"this":43}
for elem in sorted(dict.items(), reverse=True) :
print(elem[0] , " ::" , elem[1] )
参数 reverse=true
确保排序后的字典是反向的。
输出:
this :: 43
test :: 43
hello :: 56
at :: 23
Python 用自定义 key
函数方法排序字典
该方法将通过使用 key
字符串的长度对字典元素进行排序。
sorted(iterable_sequence, key=Function)
返回字符串大小的 lambda
函数被赋予 key
参数。
listofTuples = sorted(dict.items() , key=lambda x: len (x[0] ) )
for elem in listofTuples :
print(elem[0] , " ::" , elem[1] )
输出:
at :: 23
test :: 43
this :: 43
hello :: 56