master
/ 7.2.5字典排序输出.ipynb

7.2.5字典排序输出.ipynb @masterview markup · raw · history · blame

Notebook

字典排序输出

Python 3.7以前的版本中,字典本身是无序的,需要排序时,可以将字典的元素、键或值转为列表再排序输出。
3.7以后的版本字典顺序确保为插入顺序。
字典视图dict.keys()、dict.values()和dict.items()都是可逆的,同时可以作为排序函数sorted()的参数,排序返回结果为列表。
语法如下:

sorted(iterable, *, key=None, reverse=False)

字典名或dict.keys()为参数可返回键的排序列表

In [2]:
info = {'Tom': 21, 'Bob': 18, 'Jack': 23, 'Ana': 20}
sort_info = sorted(info)        # 直接对字典排序时,等价于对info.keys()排序 
sort_key = sorted(info.keys())  # 对info.keys()排序 
print(sort_key)    # ['Ana', 'Bob', 'Jack', 'Tom']
print(sort_info)   # ['Ana', 'Bob', 'Jack', 'Tom']
['Ana', 'Bob', 'Jack', 'Tom']
['Ana', 'Bob', 'Jack', 'Tom']

dict.values()为参数可返回值的排序列表

In [3]:
info = {'Tom': 21, 'Bob': 18, 'Jack': 23, 'Ana': 20}
sort_value = sorted(info.values())  # 对info.values()排序 
print(sort_value)  # [18, 20, 21, 23]
[18, 20, 21, 23]

dict.items()为参数可对列表元素进行排序,默认根据键值排序

In [1]:
info = {'Tom': 21, 'Bob': 18, 'Jack': 23, 'Ana': 20}
sort_item = sorted(info.items())  # 对info.items()排序,默认根据键值排序 
print(sort_item) 
print(type(sort_item))
[('Ana', 20), ('Bob', 18), ('Jack', 23), ('Tom', 21)]
<class 'list'>

参数key是一个函数,用来选取参与比较的元素,可结合lambda表达式;
参数reverse则是用来指定排序是升序还是降序,reverse = True是降序,reverse = False是升序。

In [5]:
info = {'Tom': 21, 'Bob': 18, 'Jack': 23, 'Ana': 20}
sort_age = sorted(info.items(), key=lambda item: item[1], reverse = True)
print(sort_age)

In [ ]: