python字典排序

python 关于字典的排序

被刻印的时光 ゝ 提交于 2019-11-30 12:59:32
转载自 https://blog.csdn.net/ustbbsy/article/details/79637594 平常学习了字典(dict),感觉还行。但一到用的时候,就感觉模棱两可。 于是就总结了字典的常见用法,以后可熟记于心。 - - - - - - - - - - - - - - - 更新日记:2019-05-21 通一表述:字典有两个参数,key, value,下面所描述,键:key,值:value 欢迎批评指正! - - - - - - - - - - - - - - - - 下面是正文 -- - - -- - - -- - - - - - - - -- - 创建一个字典 dict1={'a':2,'b':3,'c':8,'d':4} 1、分别取键、值 取字典的所有键,所有的值,利用dict1.keys(),dict1.vaules(), 由于键,值有很多个,所以要加s,另外注意这里要加括号,这样的小细节不注意,很容易犯错。 print(dict1.values(),dict1.keys()) 结果: dict_values([4, 2, 8, 3]) dict_keys(['d', 'a', 'c', 'b']) 可以看出,返回的是列表的形式 2、同时取键、值 同时取字典的键、值,dict1.items(),这里同样加s和括号 print(dict1.items()

part3-1 Python列表和元组(列表和元组常用方法使用,序列封包和解包)

孤街浪徒 提交于 2019-11-29 18:22:39
Python中内置的三种常用数据结构:列表(list)、元组(tuple)和字典(dict)。这三种数据结构可用于保存多个数据项,可以保存大量数据。列表和元组是按顺序存放元素,每个元素有自己的索引,可通过索引访问元素,两者的区别在于,元组是不可修改的,列表可以修改。字典以 key-value(键值对)形式保存数据。这三种数据结构是编程中必不可少的内容。一、序列介绍序列是指一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员。常见的序列类型有:字符串、列表、元组。字符串和元组序列类型是不可变的,一旦创建就不能修改其所包含的成员。列表是可变序列,程序可以修改列表序列中的元素。在实际运用时,如果保存固定个数的数据项,而不需要修改时,就应该使用元组。列表创建:使用方括号,元素之间用英文逗号分隔。也可将可迭代对象传递给内置函数list()来创建。元组创建:使用圆括号,元素之间用英文逗号分隔。也可将可迭代对象传递给内置函数tuple()来创建。二、 列表和元组的通用方法只要不涉及到改变元素的操作,列表和元组的用法是通用的。1、 通过索引使用元素列表和元组的索引都是从0开始,第1个元素的索引为0,第2个元素的索引为1,......,以此类推;还可以使用负数索引,倒数第1个元素的索引为-1,倒数第2个元素的索引为-2,......,以此类推

用Python实现常见排序算法

纵然是瞬间 提交于 2019-11-29 15:21:57
在1960年代,计算机制造商们曾经估计,如果将所有的用户计入,他们制造的计算机有25%的时间用于排序。实际上,有很多计算机花了超过一半的计算时间在排序上。通过这样的评估结果,我们可以得出结论,可能(i)确实有很多非常重要的和排序相关的应用,或者(ii)很多人在进行一些不必要的排序计算,再或者(iii)低效的排序算法被广泛采用造成了计算的浪费。 来源《The Art of Computer Programming》,作者Donald Knuth 在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数。《数据结构》也会花大量篇幅讲解排序。之前一段时间,由于需要,我复习了一下排序算法,并用Python实现了各种排序算法,放在这里作为参考。 最简单的排序有三种:插入排序,选择排序和冒泡排序。这三种排序比较简单,它们的平均时间复杂度均为O(n^2),在这里对原理就不加赘述了。贴出来源代码。 插入排序: def insertion_sort(sort_list): iter_len = len(sort_list) if iter_len < 2: return sort_list for i in range(1, iter_len): key = sort_list[i] j = i - 1 while

用python实现各种排序算法

假如想象 提交于 2019-11-29 15:18:27
最简单的排序有三种:插入排序,选择排序和冒泡排序。它们的平均时间复杂度均为O(n^2),在这里对原理就不加赘述了。 贴出源代码: 插入排序: 1 def insertion_sort(sort_list): 2 iter_len = len(sort_list) 3 if iter_len < 2: 4 return sort_list 5 for i in range(1, iter_len): 6 key = sort_list[i] 7 j = i - 1 8 while j>=0 and sort_list[j]>key: 9 sort_list[j+1] = sort_list[j] 10 j =j - 1 11 sort_list[j+1] = key 12 return sort_list 冒泡排序: 1 def bubble_sort(sort_list): 2 iter_len = len(sort_list) 3 if iter_len < 2: 4 return sort_list 5 for i in range(iter_len-1): 6 for j in range(iter_len-i-1): 7 if sort_list[j] > sort_list[j+1]: 8 sort_list[j], sort_list[j+1] = sort_list

python 字典排序

半腔热情 提交于 2019-11-29 04:20:54
# 如何根据字典“键”或“键值”进行不同顺序的排序?dic = {'c': 1, 'a': 3, 'b': 2}# 按键升序排序key_asc = sorted(dic.items(), key=lambda item:item[0], reverse=False)print(key_asc)# 结果:[('a', 3), ('b', 2), ('c', 1)]# 按键降序排序key_des = sorted(dic.items(), key=lambda item:item[0], reverse=True)print(key_des)# 结果:[('c', 1), ('b', 2), ('a', 3)]# 按键值升序排序value_asc = sorted(dic.items(), key=lambda item:item[1], reverse=False)print(value_asc)# 结果:[('c', 1), ('b', 2), ('a', 3)]# 按键值降序排序value_des = sorted(dic.items(), key=lambda item:item[1], reverse=True)print(value_des)# 结果:[('a', 3), ('b', 2), ('c', 1)] 来源: https://www.cnblogs.com

python字典按照key排序,按照指定的value字段排序

家住魔仙堡 提交于 2019-11-28 16:14:48
python中的字典非常常用,它本身是无序的,但有时我们需要对字典排序,下面记录一下分别按照key排序和按照值排序 sorted中 reverse = True 表示倒序 情况一:只有一个value dic={"a":1,"b":3,"c":5,"d":2} #按照键排序 sorted(dic.items(),key=lambda d:d[0]) [('a', 1), ('b', 3), ('c', 5), ('d', 2)] #按照值排序 sorted(dic.items(),key=lambda d:d[1]) [('a', 1), ('d', 2), ('b', 3), ('c', 5)] b = {1:7,2:4,5:6} sorted(b.items(),key = lambda x :x[1],reverse = True) [(1, 7), (5, 6), (2, 4)] 其中d[0]表示键,d[1]表示value 情况二:多重嵌套字典排序,排序为升序排序,结果为一个嵌套元组构成的列表 dic={"a":{"a1":3,"a2":7},"b":{"a1":1,"a2":8},"c":{"a1":5,"a2":9}} sorted(dic.items(),key=lambda d:d[1]["a1"]) [('b', {'a2': 8, 'a1': 1}), ('a',

python中涉及到的对象排序

最后都变了- 提交于 2019-11-28 15:42:21
一、列表(list)排序:   1 sort()函数     list对象有sort()内置排序方法。     list.sort(key=None, reverse=False)     key:用来指定list中元素以什么形式去参与排序,该参数可以接受一个函数,以函数的返回值进行排序。     reverse:默认false(升序),true为降序。     sort()方法改变的是对象自身,所以元组在排序时要先转换为列表。   2内置函数sorted():     result = sorted(iterable,key=None,reverse=False)     iterable:为可迭代对象,     key:用来指定可迭代对象中各元素以什么形式参与排序,key可以为一个函数,将会以函数的返回值对元素进行排序,     reverse:默认false(升序),true为降序,     result:sorted()函数不改变对象本身,它返回的是iterable按照key的排序方式排好之后的对象。 二、字典(dict)排序:   1内置函数sorted():     字典没有实例排序方法sort()。     字典排序分为按key排序、按value排序。     按key排序: key_list = sorted(dict) 默认为按key排序

python 列表、字典多排序问题

老子叫甜甜 提交于 2019-11-28 11:10:17
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/justin051/article/details/84289189 Python使用sorted函数来排序: l = [2,1,3,5,7,3] print sorted(l) 执行结果:[1, 2, 3, 3, 5, 7] 按列表每个元素,逗号前面的那个字符排序: l=['c,3','a,5','d:4','b,2','a,3'] print sorted(l,key=lambda x:x.split(',')[0]) 执行结果:['a,5', 'a,3', 'b,2', 'c,3', 'd:4'] 也可以加上第二排序关键字: l=['c,3','a,5','d,4','b,2','a,3'] print sorted(l,key=lambda x:(x.split(',')[0],x.split(',')[1])) 执行结果:['a,3', 'a,5', 'b,2', 'c,3', 'd,4'] 按逗号后面的元素从大到小排列: l=['c,3','a,5','d,4','b,2','a,3'] print sorted(l,cmp=lambda x,y:cmp(int(y.split(',')[1]),int(x

Python内置函数sorted对字典排序

女生的网名这么多〃 提交于 2019-11-28 00:55:49
被记住的永远是疯子! 字典排序是很可能会考的面试题: dic = { 'a' : 10 , 'b' : 5 , 'c' : 8 } # 1代表按value排序,0代表按key排序 result = sorted ( dic . items ( ) , key = lambda x : x [ 1 ] ) print ( result ) 默认是升序排序,降序排序用resverse参数 dic = { 'a' : 10 , 'b' : 5 , 'c' : 8 } # 1代表按value排序,0代表按key排序 result = sorted ( dic . items ( ) , key = lambda x : x [ 1 ] , reverse = True ) print ( result ) 拜拜~ 来源: https://blog.csdn.net/a18612039484/article/details/99866148

pymongo问题集合

你说的曾经没有我的故事 提交于 2019-11-27 18:27:59
1. 问题: 使用sort排序,代码如下: db.test.find().sort({"name" : 1, "age" : 1}) 遇到如下异常: TypeError: if no direction is specified, key_or_list must be an instance of list 解决方法: db.test.find().sort([("name", 1), ("age" , 1)]) 原因:在python中只能使用列表进行排序,不能使用字典 来源: https://www.cnblogs.com/wsnan/p/11372209.html