-
2020-11-30 00:44:51
1、python 字典按value排序
yuwen = {'JiaNaiLiang': 60, 'LiXiaoLu': 10, 'TianLaoShi': 44, 'MaSu': 99, 'KongLingHui': 98, 'LiuLaoShi': 77}
方法一: 排序之后返回的是字典
d.items()实际上是将d转换为可迭代对象,迭代对象的元素为 ('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)),items()方法将字典的元素 转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数(如果写作key=lambda x:x[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。lambda x:y中x表示输出参数,y表示lambda 函数的返回值),所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。
倒序:
dict(sorted(yuwen.items(), key=lambda x: x[1], reverse=True))
正序:
dict(sorted(yuwen.items(), key=lambda x: x[1])
结果
{'MaSu': 99, 'KongLingHui': 98, 'LiuLaoShi': 77, 'JiaNaiLiang': 60, 'TianLaoShi': 44, 'LiXiaoLu': 10}
不加dict
[('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)]
方法二:返回是值是列表内嵌套元组
import operator
倒序:
sorted(yuwen.items(),key = operator.itemgetter(1),reverse=True)
正序:
sorted(yuwen.items(),key = operator.itemgetter(1))
结果:
[('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)]
方法三:yuwen.values()在前面是按value值排序,如果key在前面是按key排序
f = zip(yuwen.values(),yuwen.keys())
sorted(f)
结果:
[(10, 'LiXiaoLu'), (44, 'TianLaoShi'), (60, 'JiaNaiLiang'), (77, 'LiuLaoShi'), (98, 'KongLingHui'), (99, 'MaSu')]
2、python 字典按key排序
方法一:
倒序:
sorted(yuwen.items(), key=lambda x: x[0], reverse=True)
正序:
sorted(yuwen.items(), key=lambda x: x[0])
结果:
[('TianLaoShi', 44), ('MaSu', 99), ('LiuLaoShi', 77), ('LiXiaoLu', 10), ('KongLingHui', 98), ('JiaNaiLiang', 60)]
方法二:
print(sorted(yuwen.items(),key = operator.itemgetter(0),reverse=True))
方法三:
f=zip(yuwen.keys(),yuwen.values())
sorted(d)
3、只排key或value:
-- dict.keys 排序
sorted(yuwen.keys())
-- dict.keys 返回的是 dict_keys 对象,若需要转换为列表,才可以按列表取值
list(yuwen.keys())[0]
-- dict.values 排序
sorted(yuwen.values())
-- dict.values 返回的是 dict_values 对象,若需要转换为列表,才可以取值
list(yuwen.values())[0]
更多相关内容 -
Python字典排序与取值
2020-12-22 08:33:48前言 一个非本专业的坑货,让我帮做的一道Python题,还很无chi 的那啥希望我帮写注释,简直不... # 对传入的字典根据value排序(升序) dict_sort=sorted(stock_dict.items(),key=lambda item:item[1]) #排序后得到的di -
python字典排序实例详解
2020-12-24 10:48:31本文实例分析了python字典排序的方法。分享给大家供大家参考。具体如下: 1、 准备知识: 在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对: 如:dict = {‘username’:’... -
Python字典排序
2020-11-30 00:45:02利用引出一个例子来理解例如:比如使用Python字典排序,d={'a':1,'c':3,'b':2}按值升序排列,我们可以用sorted高阶函数或者用列表的.sort()方法。下面具体阐述两种排序方法:一、sorted高阶函数d={'a':1,'c':3,'b':2...利用引出一个例子来理解
例如:比如使用Python字典排序,d={'a':1,'c':3,'b':2}按值升序排列,我们可以用sorted高阶函数或者用列表的.sort()方法。下面具体阐述两种排序方法:
一、sorted高阶函数
d={'a':1,'c':3,'b':2} #首先建一个字典dd.items() #d.items()返回的是: dict_items([('a', 1), ('c', 3), ('b', 2)])
d_result=sorted(d.items(),key=lambda x:x[1],reverse=False) #按字典集合中,每一个元组的第二个元素排列。x相当于字典集合中遍历出来的一个元组。
print(d_result) #得到: [('a', 1), ('b', 2), ('c', 3)]
sorted排序方法:
1. sorted高阶函数语法格式: sorted(可迭代对象,key=函数名,reverse=False/True)
作用:从可迭代对象中,依次取出一个元素,该元素再按照key规定的排列依据排序。
可迭代对象:即可依次取值的对象,例如:集合,序列(列表,字符串,元组),字典等。
key : 是列表排列的依据,一般可以自定义一个函数返回排序的依据,再把函数名绑定给key。
reverse : 译为反转,reverse默认等于False,从小到大排序。等于True时,从大到小排序。
2. 匿名函数lambda的格式: 函数名 = lambda [形参1,形参2,...] : ,返回操作语句块产生的结果并绑定给函数名。
例如:key=lambda x : x[1]
# x:相当于字典集合中的一个元组, 例:dict_items([('a', 1), ('c', 3), ('b', 2)])中的('a', 1)或('c', 3)或('b', 2)
# x[1]: 返回x中的第二个元素,即键值对元组中的值。dict_items([('a', 1), ('c', 3), ('b', 2)])中的1或2或3
注意:
1. sorted函数中的可迭代对象不要用字典d,那样只能迭代出的字典d的键。要用d.items()才可迭代出字典的键值对。
例:不能用 d_result=sorted(d,key=lambda x:x[1],reverse=False),要用 d_result=sorted(d.items(),key=lambda x:x[1],reverse=False)
2. sorted函数排好序后,要绑定一个对象(赋值)
例:d_result=sorted(d.items(),key=lambda x:x[1],reverse=False),因为字典是无序类型,用sorted函数排好序后不绑定d_result,字典会自动打乱顺序。
二、列表的.sort()方法
Python中的字典是无序类型,没有自己的排序方法。但可以用列表的.sort()方法来进行排序。
首先要把字典转换为列表,再进行排序。
d={'a':1,'c':3,'b':2} #首先建一个字典dd.items()#得到: dict_items([('a', 1), ('c', 3), ('b', 2)])L=list(d.items()) #得到列表: L=[('a', 1), ('c', 3), ('b', 2)]L.sort(key=lambda x:x[1],reverse=False) #按列表中,每一个元组的第二个元素从小到大排序。x代表从L中遍历出的一个元组
print(L) #得到: [('a', 1), ('b', 2), ('c', 3)]
注意:
1.上面的例子中最要的一步就是: L=list(d.items()), 即: L = list(dict_items([('a', 1), ('c', 3), ('b', 2)])
用list()列表构造函数,将L= dict_items([('a', 1), ('c', 3), ('b', 2)]) 转变为列表,得到列表: L=[('a', 1), ('c', 3), ('b', 2)] 。
list()构造函数可以把 d.items()产生的dict_items键值对集合类型,直接变成列表。
2.列表的L.sort()方法: L.sort(key=函数名,reverse=False/True)
L.sort():会自动遍历列表中的元素,即依次取出一个元素。再以key绑定的函数为依据排序。
例如: L.sort(key=lambda x:x[1],reverse=False) #L=[('a', 1), ('c', 3), ('b', 2)]
从列表L中取出第一个元素('a', 1)元组,以元组的第二个元素'1'为排序依据,再依次从列表中依次取出第二,第三,...个元素确定排序依据,最后reverse=False,按从小到大的顺序排列。
-
python字典排序方法
2022-01-16 17:40:25在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。 语法(python3): sorted(iterable, key=None,reverse=False) 参数说明: ...字典是“键-值对”的无序可变序列
在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。
语法(python3):sorted(iterable, key=None,reverse=False)
参数说明:
iterable:可迭代对象,即可以用for循环进行迭代的对象;
key:主要是用来进行比较的元素,只有一个参数,具体的函数参数取自于可迭代对象中,用来指定可迭代对象中的一个元素来进行排序;
reverse:排序规则,reverse=False升序(默认),reverse=True降序。以下总结了sorted()函数针对字典排序的用法。
第一种:最常见的单个字典格式数据排序# 字典排序 a = {'a': 3, 'c': 89, 'b': 0, 'd': 34} # 按照字典的值进行排序 a1 = sorted(a.items(), key=lambda x: x[1]) # 按照字典的键进行排序 a2 = sorted(a.items(), key=lambda x: x[0]) print('按值排序后结果', a1) print('按键排序后结果', a2) print('结果转为字典格式', dict(a1)) print('结果转为字典格式', dict(a2))
原理:以a.items()返回的列表[(‘a’, 3), (‘c’, 89), (‘b’,0), (‘d’, 34)]中的每一个元素,作为匿名函数(lambda)的参数,x[0]即用“键”排序,x[1]即用“值”排序;返回结果为新的列表,可以通过dict()函数转为字典格式。第二种:字典列表排序
b = [{'name': 'lee', 'age': 23}, {'name': 'lam', 'age': 12}, {'name': 'lam', 'age': 18}] b1 = sorted(b, key=lambda x: x['name']) b2 = sorted(b, key=lambda x: x['age'], reverse=True) b3 = sorted(b, key=lambda x: (x['name'], -x['age'])) print('按name排序结果:', b1) print('按age排序结果:', b2) print('name相同按age降序排列:', b3)
原理:以列表b里面的每一个字典元素作为匿名函数的参数,然后根据需要用键取字典里面的元素作为排序的条件,如x[‘name’]即用name键对应的值来排序。-end-
-
对 Python 字典排序的两种简单方法
2021-05-19 00:53:38引言Dictionary 是一种重要的数据结构,它通过将 key 与 value 进行映射来存储数据。Python 中的默认字典是无序数据结构。与列表一样,我们可以使用 sorted()函...引言
Dictionary 是一种重要的数据结构,它通过将 key 与 value 进行映射来存储数据。Python 中的默认字典是无序数据结构。与列表一样,我们可以使用 sorted()函数按键对字典进行排序。但是,它只返回一个根据 key 排序的列表,这通常不是我们所希望的。我们可能希望它按 value 而不是按 key 进行排序,或者我们可能希望它返回一个已排序的字典而不是一个列表。在本文中,我将讨论两种简单的方法,我们可以使用这两种方法对 Python 字典进行排序,并返回您所希望的结果。
整理一个列表
既然我们在讨论排序,我想首先指出这两个排序函数之间的一个非常重要的区别。让我们来看看列表之间的区别。假设我们有两个列表:
我们有两种对列表进行排序的方法,一种是使用 sort()进行 in-place 排序,另一种是使用 sorted() ,这不是 in-place 排序。不同之处在于,当使用 sort()时,您将更改原始列表,而 sorted()将返回一个新列表,而不更改原始列表。如下所示:
选用哪一种取决于实际情况。例如,如果您想保留原始记录,那么您应该使用 sorted()。如果希望节省空间和内存,那么应该使用 sort()。
整理一个字典
让我们创建一个字典:
在这里使用“ zip”函数非常方便,我们将两个长度相同的列表中的元素映射到一起。
为了对字典进行排序,我们必须使用 sorted() ,因为字典没有内嵌的 sort()函数:
如果我们直接使用 sorted() ,函数将只返回字典中的 key 列表:
或者一个 value 列表:
我们可以调用字典中的 items()函数按 key 对它进行排序,并返回一个元组列表:
如果我们想按相反的顺序排序 key,我们可以在排序函数中指定它:
如果我们想要按 value 进行排序呢?有两种方法可以做到这一点。一种是使用 sorted() ,但是指定使用 lambda 函数进行排序的关键;另一种是不使用默认字典类型,而是使用不同的字典类型,直接按 value 对字典进行排序。
对于第一个方法,sorted 函数是使用一个 key 参数,用于指定在进行比较之前对每个元素调用的函数(或其他可调用的函数)。在这里,我们可以使用 lambda 函数来告诉 sorted()函数使用元素的哪一部分进行比较。具体来说:
Python 是零索引,因此 x[1]指定每个元素的第二部分是一个字典,它是值。如果你想要一个反向顺序,除了在 sorted()函数中添加一个反向参数,我们可以在 lambda 函数中使用一个负号:
但是,这种技巧只有在 value 值为数值变量时才有效。如果它是一个字符串变量,我们必须使用反向参数。
如果您有一个值为数值的字典,那么在创建字典时还可以使用不同的字典类型来直接对字典进行排序。字典类型可以是来自集合库的 Counter:
Counter 是一个 dict 子类,它是一个无序集合,其中元素作为字典的 key 存储,它们的计数作为字典的 value 存储。
创建 Counter 时,使用以下代码:
我们不创建默认字典,而是创建一个Counter。这是有用的,因为当我们想要按 value 对字典进行排序时,我们可以使用 most_common()函数:
当您希望返回按 value 降序排列的元组列表时,它非常有用。
集合库还有其他有趣的数据类型,如 OrderedDict,它保留插入的每个项的顺序。欲了解更多信息,可以查看这个网址:https://docs.python.org/2/library/collections.html#。
返回一个已排序的字典
通常,在排序之后,我们会得到一个元组的排序列表。如果你想让它以字典的形式出现,你可以使用字典表达式来完成这项工作,这个功能很像列表表达式的操作:
· END ·
HAPPY LIFE
-
Python字典排序、字典列表排序、嵌套字典排序
2022-01-19 09:34:46python字典是常用的数据结构,经常用到各种python字典的排序,记录一下不同字典排序的方法。 -
python字典值排序并取出前n个key值的方法
2020-09-20 01:13:05今天小编就为大家分享一篇python字典值排序并取出前n个key值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python字典排序的方法
2021-01-20 06:25:14python字典怎么排序? 定义一个字典类型 mydict = {2: ‘小路’, 3: ‘黎明’, 1: ‘郭富城’, 4:’周董’} 可分别打印 key和value 看一下数据 按KEY排序,使用了 lambda和 reverse= False(正序) key和value都... -
python 字典排序
2015-08-22 14:21:31引子 字典,形如 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的。...如何根据需要可以根据“键”或“键值”进行不同顺序的排序? 函数原型 sorted(dic,value,revers... -
Python字典排序sorted无效,用匿名函数lambda解决
2021-08-18 18:27:33如题,今天看百度上解释python对字典排序,看了代码及运行结果发现按值排序无效 如下所示 sorted(iterable, key=None, reverse=False) 默认是从小到大 dict1={'a':2,'b':3,'c':8,'d':4} dict2 = sorted(dict1) ... -
Python 字典排序
2015-05-20 12:54:07Python字典排序 注意排序后的字典会变成一个List 分为按照值和按照键来排序 -
python 字典排序法-->升序排列
2021-09-12 11:56:58都知道,python直接排序字典是没有办法排序的。 那么可以将它变成List来排序。 def arrangement_ascending(dict_target): list_k_y = list(dict_target.items()) for r in range(len(list_k_y) - 1): for c in... -
python对字典进行排序实例
2020-12-23 22:51:02本文实例讲述了python对字典进行排序的方法,是非常实用的技巧。分享给大家供大家参考。 具体实现方法如下: import itertools thekeys = ['b','a','c'] thevalues = ['bbb','aaa','cccc'] d = dict(itertools.... -
详解python的sorted函数对字典按key排序和按value排序
2020-09-20 04:24:58主要介绍了详解python的sorted函数对字典按key排序和按value排序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
python 之字典排序
2021-03-18 11:53:18/usr/bin/env pythonresult={}foriinopen('/root/file.txt','r'):format_key="%s"%" ".join(i.strip('\n').split('/'))format_key='abcd '+format_keyifnotresult.has_key(format_key ):result[format_key]... -
Python OrderedDict字典排序方法详解
2020-12-17 13:53:17很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序。请看下面的实例: import ... -
python字典排序方法大全:1.按键排序:输出键值对、键、值;2.按值排序:输出键值对、键、值
2021-09-06 21:53:51字典的排序有以下情况 1.按键排序:输出键值对、键、值 2.按值排序:序:输出键值对、键、值 善用sorted函数: sorted(iterable, key=None, reverse=False默认升序) 用法:对所有可迭代的对象进行排序操作,默认... -
Python 字典排序,列表排序,列表嵌套字典排序
2019-12-02 20:09:22Python 字典排序,列表嵌套字典排序 列表排序 1)使用sort(),sort没有返回值,排序后直接作用于列表本身,默认升序 ll = [4, 6, 2, 7, 3, 1, 8] ll.sort() print(ll) >>>[1, 2, 3, 4, 6, 7, 8] ll = ...