先总结一下,分为以下四种情况:
情况一:按照键排序,只输出排序后所有的键情况二:按照值排序,只输出排序后所有的值情况三:按照键排序,同时输出排序后所有的键和对应的值情况四:按照值排序,同时输出排序后所有的键和对应的值 情况一:按照键排序,只输出排序后所有的键直接使用 sorted() 方法,默认是对字典的键进行排序
>>> dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}>>> print(sorted(dict))['a', 'b', 'c', 'd']也可以先用 dict.keys() 取字典的键,然后再使用 sorted() 方法进行排序
>>> dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}>>> print(sorted(dict.keys()))['a', 'b', 'c', 'd']以上方法是从小到大排序,如果是从大到小,添加 reverse=True 即可
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.keys(), reverse=True))['d', 'c', 'b', 'a'] 情况二:按照值排序,只输出排序后所有的值先用 dict.values() 取字典的值,然后再使用 sorted() 方法进行排序
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.values()))[1, 2, 3, 4]同理,如果是从大到小排序,添加 reverse=True 即可
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.values(), reverse=True))[4, 3, 2, 1] 情况三:按照键排序,同时输出排序后所有的键和对应的值方法一:dict.items() 方法可以得到包含字典键和值的元组,然后使用匿名函数 lambda,其中 i[0] 表示字典的键
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.items(), key=lambda i: i[0]))[('a', 2), ('b', 1), ('c', 4), ('d', 3)]方法二:使用 operator 模块中的 itemgetter 函数,其中 itemgetter(0) 表示字典的键
>>> from operator import itemgetter>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.items(), key=itemgetter(0)))[('a', 2), ('b', 1), ('c', 4), ('d', 3)]itemgetter 函数用于获取对象的哪些维的数据,参数为一些序号,以下举例说明:
>>> import operator>>>>>> a = [1, 2, 3, 4]>>> b = operator.itemgetter(0) # 定义函数b,获取对象的第0个域的值>>> print(b(a))1>>> b = operator.itemgetter(0, 1) # 定义函数b,获取对象的第0个和第1个域的值>>> print(b(a))(1, 2) 情况四:按照值排序,同时输出排序后所有的键和对应的值方法一:与情况三类似只需要将 i[0] 改成 i[1] 即可
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.items(), key=lambda i: i[1]))[('b', 1), ('a', 2), ('d', 3), ('c', 4)]方法二:与情况三类似只需要将 itemgetter(0) 改成 itemgetter(1) 即可
>>> from operator import itemgetter>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}>>> print(sorted(dict.items(), key=itemgetter(0)))[('a', 2), ('b', 1), ('c', 4), ('d', 3)]