python排序

排序 Python 本文主要记录一下自己学习过程中的理解,如有错误或冗余欢迎指正与交流~文章总结了插入排序、交换排序、选择排序、归并排序,依据自己的理解来介绍及记录。一、插入排序以上就是本文的主要内容,总结了插入排序、交换排序、选择排序、归并排序,如有错误冗余欢迎指正交流~ 阅读详情

参考:http://www.cnblogs.com/BeginMan/p/3193081.html


多条件排序:

teamitems = [{'team':'France'     , 'P':1 , 'GD':-3 , 'GS':1 , 'GA':4},
            {'team':'Uruguay'     , 'P':7 , 'GD':4  , 'GS':4 , 'GA':0},
            {'team':'SouthAfrica' , 'P':4 , 'GD':-2 , 'GS':3 , 'GA':5},
            {'team':'Mexico'      , 'P':4 , 'GD':1  , 'GS':3 , 'GA':2}]

print sorted(teamitems ,key = lambda x:(x['P'],x['GD'],x['GS'],x['GA']),reverse=True)
或者
from operator import itemgetter
print sorted(teamitems ,key = itemgetter('P','GD','GS','GA'),reverse=True)


一、Python的排序

1、reversed()

这个很好理解,reversed英文意思就是:adj. 颠倒的;相反的;(判决等)撤销的

print list(reversed(['dream','a','have','I']))
#['I', 'have', 'a', 'dream']

2、让人糊涂的sort()与sorted()

在Python 中sorted是内建函数(BIF),而sort()是列表类型的内建函数list.sort()。

sorted()

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

Return a new sorted list from the items in iterable.

The optional arguments(可选参数) cmp, key, and reverse have the same meaning as those for the list.sort() method (described in section Mutable Sequence Types).

cmp specifies(指定) a custom comparison function of two arguments (iterable(可迭代的) elements) which should return a negative(复数), zero or positive(正数) number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()). The default value is None.

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 (compare the elements directly).

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

#字符串排序使用是字典序,而非字母序
"""sorted()按照字典序排序"""
lis = ['a','c','z','E','T','C','b','A','Good','Tack']
print sorted(lis)   #['A', 'C', 'E', 'Good', 'T', 'Tack', 'a', 'b', 'c', 'z']

 

关于字典序:

可参考百度百科。http://baike.baidu.com/view/4670107.htm

根据ASCII排,具体如下:
0-9(对应数值48-59);
A-Z(对应数值65-90);
a-z(对应数值97-122);

------------
标准序: 短在前,长在后,等长的依次比字母,
如to < up < cap < cat < too < two <boat < boot < card
字典序: 依次比字母,
如boat < boot <cap < card < cat < to < too< two < up

更有甚者说字典序就是字典的排序,像字典一样。我一直没有找到权威的说明,什么是字典序????求答案!!

sort()

s.sort([cmp[, key[, reverse]]])

 

三、Python的字典排序

1、关于Python字典的一些特征

无序:

字典,形如 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的。

无重:

不可以有重复的键值,所以 dic.add['c'] = 4后,字典变成 {'a':1 , 'b':2 , 'c': 4}.

2、根据“键”或“键值”进行不同顺序的排序

函数原型:sorted(dic,value,reverse)

解释:dic为比较函数,value 为排序的对象(这里指键或键值),

reverse:注明升序还是降序,True--降序,False--升序(默认)

3、例子:

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, '33':56, 'd':0}
想把dic的value按照从大到小排序(value都是整数)。

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, '33':56, 'd':0}
print sorted(dic.iteritems(), key=lambda d:d[1], reverse = False )  
#[('d', 0), ('c', 3), ('asd', 4), ('bc', 5), ('a', 31), ('33', 56)]

解释如下:

(1)、dic.iteritems(),返回字典键值对的元祖集合

复制代码
print dic.iteritems()   #<dictionary-itemiterator object at 0x00B71A80>

for obj in dic.iteritems():
    print obj,obj[0],obj[1]
    
#('a', 31) a 31
#('c', 3) c 3
#('d', 0) d 0
#('bc', 5) bc 5
#('33', 56) 33 56
#('asd', 4) asd 4
复制代码

(2)、关于排序对象

上述已经说过,value(或key)为排序的对象(这里指键或键值),然而为什么使用lambda函数呢,这里请参阅:点击阅读

key=lambda d:d[1] 是将键值(value)作为排序对象。

key = lambda d:d[1]
for i in dic.iteritems():
    print key(i),   #输出31 3 0 5 56 4,这些都是字典dic的值

如果选择 key = lambda d:d[0],则选择【键Key】作为排序对象。

(3)、reverse

reverse 是否反向,reverse=Ture表示反向。

(4)、注意:

sorted(dic.iteritems(), key=lambda d:d[1], reverse = False )将每一项dic.iteritems()键值对的元祖进行迭代,每一项都作为参数传入key()函数(我说的是这个:key=lambda d:d[1],)中。

 4、回顾

lis = ['a','bc','c','asd','33','d']
print sorted(lis)   #['33', 'a', 'asd', 'bc', 'c', 'd']
依次比字母, 如boat < boot <cap < card < cat < to < too< two < up

5.问题

具体实例可参考:[**python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例**](http://wangwei007.blog.51cto.com/68019/1100742)

现在有这种情况,排序中排序。如大题号排序,然后大题对应的小题号也排序,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
lis  =  [{ 'Big' : 3 ,  'small' : 2 },{ 'Big' : 3 ,  'small' : 4 },{ 'Big' : 2 ,  'small' : 2 }, { 'Big' : 3 ,  'small' : 1 },{ 'Big' : 2 ,  'small' : 1 },{ 'Big' : 1 ,  'small' : 1 }]
 
# 大题号排序
li  =  sorted (lis, key = lambda  s: s[ 'Big' ])
 
# 输出:
#[{'small': 1, 'Big': 1}, {'small': 2, 'Big': 2}, {'small': 1, 'Big': 2}, {'small': 2, 'Big': 3}, {'s
mall ': 4, ' Big ': 3}, {' small ': 1, ' Big':  3 }]
 
# 小题号排序:
sort_ff  =  []
no  =  set ([i[ 'Big' ]  for  i  in  li])
for  obj  in  no:
li_  =  []
for  i  in  ff:
if  i[ 'Big' ]  = =  obj:
li_.append(i)
l  =  sorted (li_, key = lambda  s: s[ 'small' ])
for  j  in  l:
sort_ff.append(j)
 
# 输出结果:
[{ 'small' :  1 ,  'Big' :  1 }, { 'small' :  1 ,  'Big' :  2 }, { 'small' :  2 ,  'Big' :  2 }, { 'small' :  1 ,  'Big' :  3 }, { 'small' :  2 ,  'Big' :  3 }, { 'small' :  4 ,  'Big' :  3 }]


善用sort() 或 sorted(), a.sort() 已改变其结构,b = a.sort() 是错误的写法! 而 sorted(a, ...)并没有改变a的结构。

【Python】堆排序 从本质上讲,堆是一种特殊的、基于树形结构的数据结构。 阅读详情

相关推荐

python实现排序

此篇文章将讨论六大排序算法的基本思想,用python如何实现,并对算法的稳定性、时间、空间进行分析对比

weixin_54958866的博客 2571

字典序与标准序

标准序与字典序 标准序:短的在前面,长的在后面,等长的依次比字母 to<up<cap<cat<too<two<boat<boot<card 字典序:依次比较字母,字母较大的在后面 boat<boot<cap<card<cat<to<too<two<up ...

weixin_45640168的博客 1429

《统计学习方法》——李航 学习大纲

最近在学习李航写的统计学习方法概论, 每一章都用xmind理清了思路,括号里是书里的公式,第一次写博文,敬请指教~~~~ 第一章 统计学习方法论 第二章 感知机 每个方法其实只需要着重掌握三要素和输入输出就可以了,主要看模型、策略和算法。 感知机主要是二类分类的线性分类模型。 看到后面会注意感知机和支持向量机的区别。 第三章 k近

wjy619251334的博客 1万+

深入Python(1): 字典排序 关于sort()、reversed()、sorted()

http://www.cnblogs.com/BeginMan/p/3193081.html 一、Python的排序 1、reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的;相反的;(判决等)撤销的 print list(reversed(['dream','a','have','I'])) #['I', 'have', 'a', 'dream']

8064

PLC控制气缸与电磁阀:从原理到实战编程详解

在工业自动化领域,很多工程师都能编写PLC程序控制电机启停,但当涉及到气缸和电磁阀的精确控制时,却常常遇到动作不协调、响应延迟甚至设备损坏的问题。这背后的关键不在于PLC编程本身,而在于对气动元件特性和控制逻辑的深入理解。 本文将从实际工程问题出发,深入解析气缸与电磁阀的工作原理、PLC控制逻辑设计、常见故障排查方法,并通过完整的梯形图实例,帮助读者掌握气动系统自动化编程的核心要点。无论你是刚接触PLC的初学者,还是希望提升气动控制技能的工程师,都能从中获得实用的技术指导。 1. 气缸与电磁阀在自动化控制中

weixin_42522374的博客 338

【STK】手把手教你利用STK进行覆盖分析05-方位覆盖分析、覆盖网络检查工具和单对象覆盖分析

这一篇是我们STK覆盖模块的理论部分的最后一篇文章,之后会找尽可能多的论文来复现论文中关于STK覆盖模块的仿真的部分,到时候大家遇到不会的就可以结合前面的理论部分来看。

weixin_44184852的博客 1493

Pyhon列表排序(升序和降序)

一、sort()方法: list.sort(cmp=None, key=None, reverse=False) cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。 key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。 #列表升序 list1=['python','java','c++

专业资深测试者,多年质量管理经验,浪迹网游、金融、房产、招聘及海外行业多年,CDSN百万原创阅读,公众号500+原创文章,提倡测试左移、风险、越权、假设、探索测试,喜欢用抽象思维模式思考和技术探讨,自动化、性能、安全测试实施者,感谢关注! 7万+

麒麟v10系统安装

麒麟v10系统安装

喜文BLOG 1万+

每周TODO知识点总结 第一期

Java基础相关1、正则表达式里,字符串“*”写成“\\*”,“\”写成“\\\\”,为什么? 注意以下两点:1.字符串里面表示斜杠就需要两个斜杠如“\\” 2.正则表达式里的斜杠需要转意,是用“\”标示。 所以对于“\\\\”,第一个斜杠是转义符,第二个斜杠是斜杠本身,第三个斜杠是转义符,第四个斜杠是斜杠本身。这样就成了4个斜杠在正则表达式里面表示一个斜杠。 更多知识点:引用说明:有正斜杠与反斜杠

Cody Yang 971

YOLO26 从零到工业落地全实战:自定义训练+多场景测试+边缘部署预备,踩坑实测100%可复现

很多人觉得训练是核心,其实不是——数据集的质量,直接决定了你模型的上限。我见过太多人,标注不规范、格式错误、数据集划分混乱,然后疯狂调参,训了几百轮还是不收敛,纯属白费功夫。我这次用的是工业零件缺陷检测自定义数据集,共3个类别:划痕、毛刺、变形,总计1200张图片,给大家讲一套标准的、可复现的数据集制作流程,不管你是做工业检测、安防、交通,都能直接套用。很多人拿到数据集,直接用默认命令训练,然后抱怨精度上不去。默认参数是给COCO数据集用的,你的自定义数据集,必须针对性调参,不然根本达不到最优效果。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 569

PyCharm 怎么不升级直接使用Jupyter Notebook

在PyCharm 中需要升级到 PyCharm Professional 版本,才能直接使用 Jupyter Notebook。从截图来看,Jupyter Notebook 已经成功启动,并且正在运行。这将在默认网络浏览器中打开一个新的标签页,显示文件浏览器界面。可以在这里创建和编辑。文件添加到 PyCharm 项目中,并使用纯文本编辑功能进行修改。支持与外部工具集成,可以配置它以调用命令行工具或脚本来启动。,参数可以根据需要设置,工作目录设置为项目根目录。,你仍然可以在本地环境中安装和运行。

Davina_yu的博客 996

Python做题记录

1. 如何将一个字典按照键排序输出,提示:用sort()函数。编写代码实现。注意,函数返回值是一个字符串,字典的各个元素之间用“逗号+空格”连接。 sorted函数排序字典 (1)按照key排序:sorted(字典名.items(),key=lambda item:item[0]) (2)按照value排序:sorted(字典名.items(),key=lambda item=item[1]) def fun3(dic): dic1=sorted(dic.items(),key=lam

qq_56281949的博客 583

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

python字典排序方法

字典是“键-值对”的无序可变序列 在实际运用中,对字典进行排序是一个比较常见的操作,主要用到了python内置函数sorted(),该函数可以对所有可迭代的对象进行排序操作。 语法(python3): sorted(iterable, key=None,reverse=False) 参数说明: iterable:可迭代对象,即可以用for循环进行迭代的对象; key:主要是用来进行比较的元素,只有一个参数,具体的函数参数取自于可迭代对象中,用来指定可迭代对象中的一个元素来进行排序; reverse:排序规

LHJ优快云YL的博客 8万+

使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统

智能家居多传感器数据融合系统旨在通过集成来自多种不同类型的传感器的数据,以提供更精确和可靠的环境信息或用户状态监测。例如,将温度、湿度、光照强度、运动检测等多种传感器的数据结合起来,可以更好地了解家庭内部的状态,并做出相应的调整或响应。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统。

amy_mhd的博客 189

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python集合排序_集合排序python

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!快速排序python实现快速排序快速排序的实现同样使用分治法,它的原理是从序列中选择一个值作为基准值,然后分成比基准值小的序列集合和比基准值小的序列集合和与基准值相等的序列集合。 再将比基准值小的序列集合和比基准值小的序列集合再次进行选择基准值分割,最后再从下到上每层按照顺序合并即可...

weixin_39522927的博客 4370

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python数字排序_python中如何对数字排序

python中对数字进行排序的方法:1、使用sorted()函数对数字排序sorted() 函数对所有可迭代的对象进行排序操作。sorted 语法:sorted(iterable, cmp=None, key=None, reverse=False)参数说明:iterable -- 可迭代对象。cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于...

weixin_39707612的博客 9720

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python的排序

python的冒泡排序,sort方法排序,sorted方法排序

闪亮伞的博客 1万+

python的dict怎么排序_python的dict怎么排序

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函...

weixin_39915668的博客 1万+

python 排序

排序 作者:Andrew Dalke and Raymond Hettinger 在python中,list有一个内置函数list.sort()可以对list进行原址排序.同时python中还有另外一个sorted()函数,可以从一个可迭代对象构造一个排序的list.(可迭代对象不只是list,也包括dict等). 在本文档中,我们会探讨python中对数据进行排序的各种方式. 排序基础 一个简单的升序排列是很简单的,只需要调用sorted函数即可,它会返回一个新的已排序list. >>&g

Vincent的专栏 3699

python排序函数

python 基础的排序函数 sort 、sorted 、argsort 一、sort 、sorted 1.简单升序排序直接调用sorted函数即可 sort()方法仅定义在list中 ls = list([5, 2, 3, 1, 4]) ls.sort() print ls &gt;&gt;&gt;[1, 2, 3, 4, 5] sorted()方法对所有的可迭代序列都有效,返回list l1...

Omghhhhhh的博客 1万+

python选择排序_Python选择排序

python选择排序Here you’ll learn about python selection sort algorithm with program example. 在这里,您将通过程序示例了解python选择排序算法。 Selection sort is one of the easiest sorting algorithm out there. In Selection sor...

culing2941的博客 1824

python数字排序_python数字排序

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进行排序。 本文描述了如何对 python 中的列表进行排序。 一、python sort() 和 sorted()在 python 中,你可以使用内建的 list.sort()方法和 sorted()函数...

weixin_39686230的博客 2292

python对数据排序_python中对数据进行各种排序的方法

Python列表具有内置的 list.sort()方法,可以在原地修改列表。 还有一个 sorted()内置的函数从迭代构建一个新的排序列表。在本文中,我们将探讨使用Python排序数据的各种技术。请注意,sort()原始数据被破坏,sorted()没有对原始数据进行操作,而是新建了一个新数据。一、基本的排序最基本的排序很简单。只要使用sorted()函数即可返回一个 新的排序的列表>&gt...

weixin_42355666的博客 1万+

python dict排序_python dict 排序

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函...

weixin_39805180的博客 977

Python 排序

Python list 内置 sort() 方法用来排序,也可以用 python 内置的 全局 sorted() 方法来对可迭代的序列排序生成新的序列。

yake1965 3499
上一篇: python中的urlencode与urldecode
下一篇: iOS进度提示组件 MBProgressHUD、SVProgressHUD
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值