python 3.x中列表排序问题,从python2.x过渡到python3.x

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

我也刚学python不多久,所以是学的最新版的3.1,发现有很多规则都和2.x的不一样,最最基本的print都改了,恐怕想把以前的工程移植到3.x没有哪个工程是不需要改动的,感觉python有点失败。。。

 

接下来说下我遇到的问题,本来想学下lambda用法(现在还没搞明白),就在网上找了个例子,如下(print语法我已经改了):

 

运行,然后报错:

Traceback (most recent call last):
  File "C:/WilliamPythonProj/test.py", line 18, in <module>
    List.sort(lambda p1,p2:cmp(p1.age,p2.age))
TypeError: must use keyword argument for key function

 

就是在排序那里出的错,经过查看官方文档得出结论:

sorted ( iterable [ , key ] [ , reverse ] )

Return a new sorted list from the items in iterable .

Has two optional arguments which must be specified as keyword arguments.

key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower . The default value is None .

reverse is a boolean value. If set to True , then the list elements are sorted as if each comparison were reversed.

To convert an old-style cmp function to a key function, see the CmpToKey recipe in the ASPN cookbook .

 

重点:key指定含有一个参数的函数,这个函数被用来提取各个元素之间比较用的关键字(现在看来,这个用法比用lambda更明了些)

 

根据这个提示,终于明白了,我要比较List中每个元素大小,每个元素都是People类,用age成员作为比较关键字,所以很简单联想到要给key赋一个方法,这个方法返回People中的age,所以修改后代码如下:

 

 

几个需要注意的地方

1. sort(key=People.Age),而不是sort(key=People.Age())

2. sort中的reverse参数,在key之后,布尔型,来指定是否反转排序,以前是在cmp()前加负号实现的

 

 

就此,问题得以解决,也反映出了一些问题,要多看官方文档。

现在学python的真少,而且有很多是学的2.x的,3.x的语法和规则改变太大,入门的人为难了,很可能会学一门语言入门两次,哈哈,我还好直接学3.x

python列表内的字典排序 python列表内的字典排序 升序排序: alldate = [{'学号': 2.0, '姓名': '李四', '科目': '数学', '成绩': 77.0}, {'学号': 3.0, '姓名': '王五', '科目': '数学', '成绩': 78.0}, {'学号': 1.0, '姓名': '张三', '科目': '数学', '成绩': 90.0}, {'学号': 3.0, '姓名': '王五', '科目': '英语', '成绩': 阅读详情

相关推荐

python列表基本操作之排序

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、背景二、增加元素1、append()方法2、extend()方法三、增加元素1、insert()方法四、查找计数元素1、index()方法2、count()方法五、删除元素1、del命令2、pop()方法3、remove()方法六、分片赋值七、列表排序1、reverse()方法2、sort()方法.

jiankang66的博客 3万+

Sorted() 函数与自定义排序函数报错: TypeError: must use keyword argument for key function

此错误正在查找原因。。。。 栗子1: 调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序 def reversed_cmp(x, y): if x > y: return 1 if x < y: return -1 return 0 L1 = [16, 5, 120, 9, 66] print(sort...

zhf的博客 6280

python的sort函数(TypeError: must use keyword argument for key function)输出值为none处理方法

最近学习python时候遇到了sort函数。感觉很有意思也是容易出错的一个点,以此文章加深印象sort(reverse=True or False,keyfunction) 一般我们处理非嵌套列表用不上第二个参数,这里也不讲述第二个参数了,一般默认值就可以了。只处理第一个参数! 打印结果为 2,7,8,199 很显然,这样可以打印出我们想要的结果,sort()参数置为空的话reverse默认为False。 那要是我们补充第一个参数呢? 这样再运行会发现竟然会报错! TypeError: must use k

Aiyflwoers的博客 2395

python3 的 sorted() 函数中报‘cmp‘ is an invalid keyword argument for sort()的问题

首先,明确一点,python3中将,sorted函数中的 cmp 参数给干没了。于是乎,python2中正常的代码在python3中但凡涉及到 cmp 参数的地方都会报错。 解决方法为,使用 cmp_to_key() 方法,该方法在 functools 包中。 看个简单点的案例: from functools import cmp_to_key nums = [4, 3, 2, 1] sorted(nums,key=cmp_to_key(lambda a, b: a - b)) 这个简单吧,

m0_46900715的博客 4520

对字典按照Key或value进行排序list.sort()的使用

转载自:https://www.jianshu.com/p/44544b166b57 test_data_1 = sorted(c.items(), key=lambda x: (pd.to_datetime (x[1][x[1].IS_STATION == mlin1].head(1).reset_index().SITE_TIME[0]))) trace_dict_sig1 = dict(...

起飞的木木的博客 5940

python3排序

python3排序 用sorted可以自定义排序方式 且是在原有数据基础上生成一个排序后的列表 b=sorted(a,key=lambda x:x[1]) #python3中用cmp会报错:TypeError: 'cmp' is an invalid keyword argument for this function print(b) 输出: [[6, 0], [2, 1]...

左左张 893

pythonlist列表进行排序方法总结

使用sort()函数 sort()函数的语法格式为:list.sort( key=None, reverse=False) 其中: key 参数(可选)指定可迭代对象中的某个元素进行排序。 reverse 参数(可选)表示排序规则,包含升序(False)和降序(True),默认是False升序排序。 该方法没有返回值,示例如下: #!/usr/bin/env python # -*- coding:utf-8 -*- if __name__ == '__main__': t1 = [[

程序星空实验室 2万+

Python系列】Python 中对对象列表进行排序

在上述例子中,我们使用了lambda函数来自定义排序依据。lambda函数是一种简洁的匿名函数,非常适合用于key参数。在这个例子中,我们通过lambda函数去掉了版本号字符串的第一个字符,并将其转换为整数,以便进行数值比较。

CSDN站内信: https://i.csdn.net/#/msg/chat/qyj19920704 2万+

python3列表排序_Python3.x中对列表中的子列表内的字典进行排序

0.前言python3.61.排序排序list如下: print(all_list)>>>[[{'name': 'article'}, {'id': 35}, {'time': datetime.datetime(2017, 11, 20, 8, 51, 7)}], [{'name': 'article'}, {'id': 34}, {'time': datetime.dat...

weixin_35019134的博客 422

python3字典列表_在Python3排序字典列表

我正在整理一份词典。我的目标是以相同的方式对具有多个(可能相同)键的字典进行排序,即使字典的顺序不同,或者这些键在字典中的顺序不同。在在python2中,我使用了以下内容:a = [{1: 2, 7: 8}, {7: 8, 3: 4}, {5: 6}]b = [{3: 4, 7: 8}, {7: 8, 1: 2}, {5: 6}]a.sort()b.sort()aOut[20]: [{5: 6},...

weixin_39796652的博客 500

python3列表排序_【Python3Python3中的排序

这篇文章总结了 Python3 中的排序方法。sort 和 sorted 的区别sort 只能对列表进行排序,使用方式为list.sort(),返回值为空。sorted对所有可迭代对象(例如元组、列表、字典等)进行排序,返回排好序的对象。list.sort()sorted()sort(*, key=None, reverse=False)sorted(iterable, *, key=None, ...

weixin_39769406的博客 1354

python_字典列表嵌套的排序问题

上一篇我们聊到python 字典和列表嵌套用法,这次我们聊聊字典和列表嵌套中的排序问题,这个在python基础中不会提到,但实际经常运用,面试中也喜欢问,我们娓娓道来。 在说组合排序之前,先来看看排序有哪些函数。 排序函数 使用排序有两个可用方法,分别是sort()和sorted()。 sort():内置方法,会改变原来列表排序、只适用于列表排序、所以效率高。 sorted():全局,可迭代任意对象(字符串,元组,列表,字典等) sort()使用例子: 简单的使用: >>&gt

chinaherolts2008的博客 4630

python列表按照指定顺序排序-Python3实现对列表按元组指定列进行排序的方法分析...

本文实例讲述了Python3实现对列表按元组指定列进行排序的方法。分享给大家供大家参考,具体如下:Python版本: python3.+运行环境: Mac OSIDE: pycharmPython内建的排序方法1 排序方法介绍Python中有2排序函数,一个是list内置的sort()方法,另一个是全局的sorted()方法sorted(iterable,key=None,reverse=Fal...

weixin_37988176的博客 4151

python列表数据排序_Python中,如何将列表中数据排序列表排序

在程序中使用字典进行数据信息統计时由于字典是无序的所以打印字典时内容也是无序的。因此为了使统计得到的结果更方便查看需要进行排序Python中字典的排序分为按“键”排序和按“值”排序那么python如何将列表中数据排序对字典排序呢?一起来了解下吧:实际应用中我们确实有这种排序的“需求”-----按照values的值“排序”输出或者按照别的奇怪的顺序进行输出,我们只需要把字典转化成list或者tup...

weixin_39624360的博客 3438

python字典,列表嵌套的排序

字典的排序 1.按照字典的键值(value)排序 rdict = {'业务咨询':1,'需求收集':3,'资源申请':0,'故障申报':0,'投诉建议':8} res_dict = sorted(rdict.items(),key=lambda d:d[1], reverse=True) print(res_dict) 2.按照字典的键名(key)排序 rdict = {'业务咨询':1,'需求...

LuckFariy的博客 2477

python二维列表排序

方法一: 使用 lambda 关键词辅助对二维列表进行排序lambda的使用方法参考https://blog.csdn.net/zjuxsl/article/details/79437563 假设有一个学生列表存储了学号,姓名,年龄信息: students = [[3,'Jack',12],[2,'Rose',13],[1,'Tom',10],[5,'Sam',12],[4,'Joy',...

Ceres的博客 5万+

python列表排序从小到大,python列表排序sorted

大家好,本文将围绕python列表排序sort按某个值排序展开说明,python列表排序的方法有几种是一个很多人都想弄明白的事情,想搞清楚python列表排序从小到大需要先了解以下几个事情。「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者「推荐专栏」:小白零基础。

Aq1995的博客 1885

python 怎么让列表里的数从大到小排列,python中如何给列表排序

这篇文章主要介绍了Python中对列表排序实例,需要的朋友可以参考下很多时候,我们需要对List进行排序Python提供了两个方法,对给定的List L进行排序:方法1.List的成员函数sort进行排序方法2.用built-in函数sorted进行排序(从2.4开始)这两种方法使用起来差不多,以第一种为例进行讲解:从Python2.4开始,sort方法有了三个可选的参数,Python Lib...

weixin_29502579的博客 3万+

python3嵌套列表排序

嵌套列表排序 列表: demolist = [[3,'b','2020-7-1'],[2,'e','2020-6-26'],[10,'a','2020-8-16']] 排序: demolist.sort(key=lambda x: x[1], reverse=False) 说明: reverse为False则按从大到小降序排列,为True则按从小到大升序排列 示例: ...

技术无止境,人生仍探索。 1924
上一篇: 什么是SSID?(wlan中的SSID)
下一篇: symbian 开发常见错误代码及原因总结
张尔谢尔
博客等级 码龄19年 13粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值