python字典排序

day13匿名函数

被刻印的时光 ゝ 提交于 2020-03-27 20:57:21
补充知识点: def func(*args): for i in args: for j in i: yield i print(list(func('asdf',(1,2,3)))) #list可以将生成器中的所有元素添加到列表中。 #简化上述函数: def func(*args): for i in args: yield from i #优化了内层循环,提高了运行效率。 匿名函数(用lambda构建):一语句函数,比较简单的函数。形式:lambda 参数 : 返回值 def func(a,b): return a+b #构建匿名函数: func1 = lambda a,b:a+b print(func1(1,2)) lambda 参数 : 返回值:lambda后直接加形参,形参加多少都可以,但一般只用位置参数,参数之间需要用”,“隔开。 #例1:接受一个可切片的数据,以元祖形式返回索引位0与2的对应元素 func = lambda a:(a[0],a[2]) #例2:接收两个int参数,将较大的数据返回。 func = lambda a,b:a if a>b else b 内置函数: int():将字符串类型转换为int类型;取整(舍尾法) float():将int和str转换为float。 list():将一个可迭代对象转换成列表 tuple():将一个可迭代对象转换成元组

python之高阶函数和匿名函数

别说谁变了你拦得住时间么 提交于 2020-03-12 22:01:06
map() map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 1 def func(x): 2 return x*x 3 4 r = map(func, [1, 2, 3, 4, 5]) 5 print(type(r)) 6 r = list(r) 7 print(r) 输出结果: <class 'map'> [1, 4, 9, 16, 25] 可以看出,map让函数func作用于列表的每一项,使列表的每一项都被函数func执行一次,即列表的每一项都进行平方。其返回值是map类型。 reduce() reduce函数必须接收两个参数,把一个函数作用在一个序列[x1, x2, x3, ...]上,然后再把结果继续和序列的下一个元素做累积计算 。 1 from functools import reduce 2 3 def fn(x, y): 4 return x * 10 + y 5 6 f = reduce(fn, [1, 3, 5, 7, 9]) # 把序列变为整数 7 print(f) 8 print(type(f)) 输出结果: 13579 <class 'int'> 和map不同,虽然reduce也是作用于每个元素,但是reduce的作用结果要用在下次和另一个元素做累积计算。

Python 的列表排序

不问归期 提交于 2020-03-08 02:45:20
在 Python 中, 当需要对一个 list 排序时, 一般可以用 list.sort() 或者 sorted(iterable[, cmp[, key[, reverse]]]). 其中: cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数. key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素. reverse 是一个布尔值, 表示是否反转比较结果. 我以前在做比较复杂的排序时, 喜欢写一个定制的 cmp 函数. 当我看了 Python 文档后, 发现我的做法是不好的. 简单说明如下: 1, 通常, key 和 reverse 比 cmp 快很多, 因为对每个元素它们只处理一次; 而 cmp 会处理多次. 也就是说, 同等情况下, 写 key 函数比写 cmp 函数要高效很多. 2, 对一些貌似比较复杂的排序, 也是不需要写 cmp 函数的, 举例如下: >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),] 用元素索引做 key: >>> sorted(students, key=lambda student:

python 字典排序

我们两清 提交于 2020-03-08 02:40:20
对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是一个哈希表的结构: 但实际应用中我们确实有这种排序的“需求”-----按照values的值“排序”输出,或者按照别的奇怪的顺序进行输出,我们只需要把字典转化成list或者tuple,把字典每一对键值转化为list中的两位子list或者子tuple再输出,就可以达到我们的目的: 【Python】 sorted函数 我们需要对List、Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本 方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变 --------------------------------sorted--------------------------------------- >>> help(sorted) Help on built-in function sorted in module __builtin__: sorted(...) sorted(iterable, cmp=None, key=None, reverse

Python : 字典按键和值排序

淺唱寂寞╮ 提交于 2020-03-07 10:34:02
[1] sorted()函数 排序函数 sorted(iterable,key,reverse) ,iterable表示 可迭代的对象 ,例如可以是dict.items()、dict.keys()等;key是一个 函数 ,用来选取参与比较的元素;reverse则是用来指定排序是 倒序还是顺序 ,reverse=true则是倒序,reverse=false时则是顺序(默认)。 [2] 按key排序 1、sorted(dict) == sorted(dict.keys()) #返回键 # items以列表形式返回 字典键值对 2、sorted(dict.items(),key=lambda d:d[0]) 3、sorted(dict.items(),key=operator.itemgetter(0)) # import operator [3] 按value排序 1、sorted(dict,key=dict. getitem ) #返回键 2、sorted(dict.items(),key=lambda d:d[1]) 3、sorted(dict.items(),key=operator.itemgetter(1)) 来源: CSDN 作者: 学习CV的菜鸟 链接: https://blog.csdn.net/qq_40263477/article/details/104683211

Python字典排序与取值

独自空忆成欢 提交于 2020-03-07 02:24:26
前言 一个非本专业的坑货,让我帮做的一道Python题,还很无 chi 的那啥希望我帮写注释,简直不能忍 (〃´皿`)q… 最后,我为了维护世界的和平,就当复习一下Python知识了。 题目 题目都懒得打,直接截他发给我的图片 源代码 每一行都写注释了,就不分析什么鬼了 #定义一个 find_max_and_min 函数 def find_max_and_min ( stock_dict ) : # 对传入的字典根据value排序(升序) dict_sort = sorted ( stock_dict . items ( ) , key = lambda item : item [ 1 ] ) #排序后得到的dict_sort是一个列表(可使用type(dict_sort)查看类型),需再转化为字典 dict_Last = dict ( dict_sort ) print ( list ( dict_Last . values ( ) ) [ 0 ] ) # 输出字典的第一个value(最小值) print ( list ( dict_Last . values ( ) ) [ - 1 ] ) # 输出字典的最后一个value(最大值) stock_dict = { '20200101' : 30.21 , '20200102' : 28.5 , '20200103' : 29.6

python cookbook 搜索和排序

本小妞迷上赌 提交于 2020-03-01 05:41:15
1.当需要排序的时候,尽量设法使用内建 Python 列表的 sort 方法; 2.当需要搜索的时候,尽量设法使用内建的字典。 3.python list.sort()方法:相比于手工构建一个辅助的元组列表,使用 sort 方法的 key=参数更加容易、更节省内存,而且速度也更快。 4.通常使用reduce(),map(),filter()要比使用字典、列表、集合内涵快一些 5.DSU 排序技术可以用于任意数目的主键。只要愿意,可以给元组增加足够多的键,当然它们的顺序得按照你希望进行的比较顺序进行排列。可以给列表的 sort 方法传递一个可选的命名参数 key,而且它可以被调用,作用于列表中的每个元素并获得用于排序的键。如果传递这样的一个参数,排序会在内部使用 DSU。 6.list的remove()方法,调用会线性地搜索整个列表以获取要删除的元素。一句话,如果需要 Python 中的伪随机行为,需要的是标准库的 randompopitem 模块。 7.list的sort方法的时间复杂度是O(nlogn) 8.当使用heapq模块时,你调用 heappop 从列表中获取元素时,总是得到当前最小的元素,然后所有节点会被调整,以确保堆特性仍然有效。每次通过 heappush 添加元素,或者通过heappop 删除元素,它们所花费的时间都正比于当前列表长度的对数(O(logN),准确地说

numpy np.sort()函数(指定对某一轴进行排序,返回数组的排序副本)(成对数组不要用这个排,用哪个啥lexsort()或argsort()都行)

Deadly 提交于 2020-02-25 19:27:41
指定对哪一层进行排序,如果需排序的是多维数组,特别是那种np.sort()貌似不太友好 from numpy\core\fromnumeric.py @array_function_dispatch ( _sort_dispatcher ) def sort ( a , axis = - 1 , kind = None , order = None ) : """ Return a sorted copy of an array. 返回数组的排序副本。 Parameters ---------- a : array_like Array to be sorted. axis : int or None, optional Axis along which to sort. If None, the array is flattened before sorting. The default is -1, which sorts along the last axis. 要排序的轴。 如果为None,则在排序之前将数组展平。 默认值为-1,它沿着最后一个轴排序。 kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional Sorting algorithm. The default is 'quicksort'.

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

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

python基础学习浅学排序循环斐波那契(部分为网上引用)

浪尽此生 提交于 2020-02-15 03:25:39
自我学习:python中sorted方法和列表的sort方法使用详解: 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。 1.排序,数字、字符串按照ASCII,中文按照unicode从小到大排序 x = [3,6,2,1,7,9] x.sort() print(x) 输出为:[1,2,4,6,7,9] 创造一个排序好的副本,同时保持原列表不变: x = [4, 6, 2, 1, 7, 9] y = x[:] y.sort() print(y) # [1, 2, 4, 6, 7, 9] print(x) # [4, 6, 2, 1, 7, 9] 注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。 另一种获取已排序的列表副本的方法是使用sorted函数: x =[4, 6, 2, 1, 7, 9] y = sorted(x) print (y) #[1, 2, 4, 6, 7, 9] print (x) #[4, 6, 2, 1, 7, 9] sorted返回一个有序的副本,并且类型总是列表,如下: print (sorted(‘Python’)) #[‘P’, ‘h’, ‘n’, ‘o’, ‘t’, ‘y’] 2.可选参数