先总结一下,分为以下四种情况:
- 情况一:按照键排序,只输出排序后所有的键
- 情况二:按照值排序,只输出排序后所有的值
- 情况三:按照键排序,同时输出排序后所有的键和对应的值
- 情况四:按照值排序,同时输出排序后所有的键和对应的值
情况一:按照键排序,只输出排序后所有的键 |
直接使用 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)]