【python sort、sorted高级排序技巧】教程文章相关的互联网学习教程文章

如何在Python中对对象进行排序【代码】

假设我有一些列表中的某些对象. 如果未提供键功能,则使用什么值的对象来执行排序(lst)?是散列还是一些id?解决方法:当没有提供密钥时,sort仅使用<运算符,如下例所示: class A:def __init__(self,a):self.a = adef __lt__(self,other):return self.a < other.adef __repr__(self):return str(self.a)lst = [A(12),A(10),A(44)] print(sorted(lst))在这里,我得到:[10, 12, 44]sort在内部使用了定义的__lt __(小于)运算符,但不等于...

python – NumPy / Pandas:删除顺序重复值(相当于没有排序的bash uniq)【代码】

参见英文答案 > Pandas: Drop consecutive duplicates 4个给出像这样的Pandas系列(或numpy数组):import pandas as pd myseries = pd.Series([1, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 3, 3, 1])有没有一种很好的方法来删除顺序重复项,就像unix uniq工具一样? numpy / pandas unique()和pandas drop_duplicates函数删除所有重复项(如unix的| sort | uniq),但我不想这样:>>> print(m...

python – 按列表中的值对字典键进行排序?【代码】

我有一本字典和一份清单.键的值与列表的值匹配,我只是想知道如何通过列表中的值对字典中的值进行排序.>>> l = [1, 2, 37, 32, 4, 3] >>> d = {32: 'Megumi', 1: 'Ai',2: 'Risa',3: 'Eri', 4: 'Sayumi', 37: 'Mai' }我尝试过使用的东西……>>> sorted(dict.keys(), key=list.index)…但显然只返回所需顺序的键. (应该在凌晨3点意识到列表和字典是可怕的名字,我把它们改为l和d.)解决方法:你不应该叫你变量dict和list,因为那时你不能再...

Python排序多个属性【代码】

我有一个如下字典.键值对或用户名:名称d = {"user2":"Tom Cruise", "user1": "Tom Cruise"}我的问题是我需要按名称对这些进行排序,但如果多个用户包含与上面相同的名称,那么我需要按用户名对它们进行排序.我查找了已排序的函数,但我真的不了解cmp参数和lambda.如果有人可以解释这些并帮助我这将是伟大的!谢谢 :)解决方法:cmp已经过时了. lambda只是一个功能.sorted(d.iteritems(), key=operator.itemgetter(1, 0))

python 排序 堆排序【图】

算法思想 :堆排序利用堆数据结构设计的一种排序算法,堆是一种近似完全二叉树的结构,同时满足堆积的性质,即对于任意的i均有ki>=k(2i+1),ki>=k(2i+2) 步骤: 将数组转化为最大堆 将当前堆的根结点和最后一个结点交换,然后将前n-1个元素转化为最大堆 重复上一过程 为什么要是最大堆呢,因为这样方便再第二步交换的时候可以将最大的放在最后,得到最后升序的结果 算法实现:堆排序的主要复杂的地方就是在于生成最大堆的算法,而...

python – 从排序列表中获取大于给定数字的第一个元素【代码】

我有两个清单.列表B就像一个数据库,我需要逐个比较列表A的每个元素.让我们说B = [0.6, 1.7, 3, 4.5] A = [0.6, 0.9, 1.2, 1.5, 2, 2.5, 3, 4, 4.5]B是一个排序列表,因此对于每个A [i],只要算法在B中找到一个>> A [i]的数字,就应该将其作为输出返回.所以我的输出应该类似于:C = [0.6, 1.7, 1.7, 1.7, 3, 3, 3, 4.5, 4.5]能否请您建议最简单的解决方案,尽可能避免嵌套循环?解决方法:如果您可以使用第三方库,一个解决方案是通过np.s...

在Python中排序磁盘I / O错误

如何从“尝试写入只读文件系统”中挑选(区分)从“磁盘已满状态”派生的错误?我不想填写我的高清来找出:)我想要的是知道谁捕获每个异常,所以我的代码可以在用户尝试写入ReadOnly FS时向用户说些什么,如果用户试图在磁盘已满的情况下写入文件,则可以说出另一条消息.解决方法:一旦捕到IOError,例如使用Python 2中的IOError,e:子句,你可以检查e.errno以确切地找出它是什么类型的I / O错误(不幸的是,这种方式不一定在不同的操作系统中...

python – 排序一组dicts【代码】

我是Python的新手,如果我正确地做这件事,我很好奇.我有一个dicts元组(来自数据库调用):companies = ( { 'companyid': 1, 'companyname': 'Company C' },{ 'companyid': 2, 'companyname': 'Company A' },{ 'companyid': 3, 'companyname': 'Company B' } )我想在公司名称上对此进行排序.有没有比这更正确的方法呢?sortcompanies = list(companies) sortcompanies.sort(lambda x,y: cmp(x['companyname'],y['companyname']))谢谢你...

Python发行版/版本号的标准排序顺序是什么?

Python的pip和easy_install遵循一些规则来按发布号对包进行排序.对beta / release / bugfix版本进行编号的规则是什么,以便这些工具知道哪些是最新的?解决方法:对许多人来说,这是一个痛点. setuptools和easy_install有一些相当奇怪的规则,试图与每个人玩得很好.您可以在setuptools的parse_version方法中阅读完整规则,但这里是摘要: >版本号由点分解为许多段的元组. 4.5.6.7被解析成等于(“4”,“5”,“6”,“7”)的元组.>短划线或...

python进阶--字典排序【代码】

zip()函数 sorted()要求对字典中,按值的大小排序 解决方案: 利用zip函数 zip函数介绍: zip函数可以将可迭代对象打包成一个个元组,在python3中返回一个对象,在python2中返回一个列表 常用操作方法 In [1]: a = [1,2,3] In [2]: b = [2, 4, 6] ...

Python自定义排序,由元组的两个元素区别【代码】

我是Python的自定义排序功能的新手,但我确信可以完成以下任务.我有一个元组列表,每个元组看起来像这样:(some_int, some_int2, string)我想通过some_int和some_int2之间的下降差异对列表进行排序,即这两个整数之间的最大差异应该在列表的头部.可以安全地假设some_int2总是大于some_int. 谢谢你们.解决方法: mylist.sort(key=lambda t: t[0] - t[1])注意我将以“错误”的顺序减去它们,这意味着差异将全部变为负数,从而将最大的数量排...

python – 按列表A排序列表B?【代码】

假设我有一些带有k个元素的列表A,以及带有k个元素的列表B.我想对列表A进行排序,但我也希望以相同的方式置换列表B. 例如A = [2,3,1,4] B = [5,6,7,8]排序后A:A = [1,2,3,4] B = [7,5,6,8]解决方法:这是一种方式:>>> A = [2,3,1,4] >>> B = [5,6,7,8] >>> A, B = zip(*sorted(zip(A, B))) >>> list(A) [1, 2, 3, 4] >>> list(B) [7, 5, 6, 8]简而言之: >将A和B压缩成对列表;>排序对;> unzip回到A和B;>将元组转换为列表. 如果你喜欢...

python – 在排序列表中插入自定义对象【代码】

我实现了一个带有数字属性的对象.我想保留根据该属性排序的那些对象的列表,而不需要在每次插入时运行排序方法.我看了一下bisect模块,但我不知道我是否也可以将它与一个对象一起使用.最好的方法是什么?解决方法:如果实现__lt__方法,则可以为自定义对象执行此操作,因为this is what bisect will use用于比较对象.>>> class Foo(object): ... def __init__(self, val): ... self.prop = val # The value to compare ... ...

基于最后一个元素的Python元组排序【代码】

参见英文答案 > Tuple pairs, finding minimum using python 3个这是我的问题我有tuple1 = [(1,3),(3,2),(2,1)]我想根据每个元组的最后一个数字排序元组,所以结果将看起来像这样输出= [(2,1),(3,2),(1,3)]下面是我的代码i=0 for x in tuples:c.append(x[len(x)-1])last=sorted(c)for y in last.iteritems():if(y in x[len(x)-1]):print x #b.insert(i,x) i=i+1运行iam后收到错误消...

Python:如何对数组X进行排序,但对Y进行相同的相对排序?【代码】

例如X=[5,6,2,3,1] Y=[7,2,3,4,6]我排序X:X=[1,2,3,5,6]但是我希望将相同的相对排序应用于Y,因此数字保持在相同的位置,如前所述:Y=[6,3,4,7,2]我希望这是有道理的!解决方法:通常,您为此执行zip-sort-unzip>>> X = [5,6,2,3,1] >>> Y = [7,2,3,4,6]现在将它们排序:>>> sorted(zip(X,Y)) [(1, 6), (2, 3), (3, 4), (5, 7), (6, 2)]用“解压缩”(zip(* …))配对>>> zip(*sorted(zip(X,Y))) [(1, 2, 3, 5, 6), (6, 3, 4, 7, 2)]你可...