python 字典 分别根据值或键进行排序的方法

最近经常遇到根据字母出现的频率进行排序的题目

我的思路一般是借用字典统计字母出现的频率

然后对字典按照值进行排序

但是每次按照值进行排序时 

都会忘记排序方法

在此记录一下,以加深印象 

 

字典原始值如下:

dic = {'Emily': 25, 'Dory':3, 'Yilia':2}

 先记录根据值进行排序的方法,代码如下:

>>> dic_sort_by_values = sorted(dic.items(), key = lambda x: x[1])
>>> print(dic_sort_by_values)
[('Yilia', 2), ('Dory', 3), ('Emily', 25)]

逆序代码如下,需要增加一个 reverse= True的参数 

>>> dic_sort_by_values = sorted(dic.items(), key = lambda x: x[1], reverse = True)
>>> print(dic_sort_by_values)
[('Emily', 25), ('Dory', 3), ('Yilia', 2)]

取前n个值代码如下,需要借用循环及计数器:

>>> required_count = 2
>>> res = []
>>> count = 0
>>> for k ,v in dic_sort_by_values:
    count += 1
    if count > required_count:
        break
    else:
        print('{}:{}'.format(k, v))

        
Emily:25
Dory:3

 

 

根据键值进行排序的代码如下,两种排序方式返回的数据不同,一种仅返回键组成的列表,另外一种则返回由元组(k,v)组成的列表:

>>> dic_sort_by_keys = sorted(dic.keys())
>>> print(dic_sort_by_keys)
['Dory', 'Emily', 'Yilia']
>>> dic_sort_by_keys = sorted(dic.items(), key = lambda x: x[0])
>>> print(dic_sort_by_keys)
[('Dory', 3), ('Emily', 25), ('Yilia', 2)]

逆序代码如下,需要增加一个 reverse= True的参数 

>>> dic_sort_by_keys = sorted(dic.items(), key = lambda x: x[0], reverse = True)
>>> print(dic_sort_by_keys)
[('Yilia', 2), ('Emily', 25), ('Dory', 3)]

 

posted @ 2020-10-18 12:06  千鱼千寻  阅读(330)  评论(0编辑  收藏  举报