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)]