引子

字典,形如 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的。并且不可以有重复的键值,所以 dic.add['c'] = 4后,字典变成 {'a':1 , 'b':2 , 'c': 4}.

待解决问题

如何根据需要可以根据“键”或“键值”进行不同顺序的排序?

函数原型

sorted(dic,value,reverse)

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

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

案例

dic = {'a':3 , 'b':2 , 'c': 1}

注意

排序之后原字典没有变,顺序依旧

两个函数

1.lambda

功能: 创建匿名函数

区别: 和def函数定义,以下两点区别

lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量

lambda它只是一个表达式,而def则是一个语句

案例:

2.iteritems()

功能: iteritems()以迭代器对象返回字典键值对

区别: 和item相比:items以列表形式返回字典键值对

案例:

注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键([0])或键值(1])

一、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

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

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() #

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

5.问题

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

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

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

python字典sort_python字典排序相关推荐

  1. python字典sort_python字典排序实例详解

    本文实例分析了python字典排序的方法.分享给大家供大家参考.具体如下: 1. 准备知识: 在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-valu ...

  2. python 数组排序sort_Python之排序函数sort() 和 sorted()

    sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...

  3. python字典排序sort_Python字典排序

    利用引出一个例子来理解 例如:比如使用Python字典排序,d={'a':1,'c':3,'b':2}按值升序排列,我们可以用sorted高阶函数或者用列表的.sort()方法.下面具体阐述两种排序方 ...

  4. python中对字典进行排序_python如何给字典排序

    在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对: 如:dict = {'username':'xiaoming','password': ...

  5. python关于字典嵌套字典,列表嵌套字典根据值进行排序

    python 对于字典嵌套字典, 列表嵌套字典排序 例:列表嵌套自字典:d = [{"name": '张三', 's': 68}, {'name': '李四', 's': 97}] ...

  6. python字典按键值排序_在Python中按键或值按升序和降序对字典排序

    python字典按键值排序 Problem Statement: Write a Python program to sort (ascending and descending) a diction ...

  7. python字典value排序_python字典按照value排序方法

    python中,我们可以对列表.字符串.元祖中的元素进行排序,那对于字典中的元素可以排序吗?其实对于字典本身我们无法进行排序,但是我们可以对字典按值排序.本文介绍python中对字典按照value进行 ...

  8. python中的字典排序--sorted()

    字典的排序:在学习python的时候,了解到相比于列表,字典是一个无序的数据结构,一般都不对其进行排序的.但是要想对字典进行排序,是可以通过sorted()函数进行操作的! 关于字典的排序,下面从键k ...

  9. python 编程中字典排序的方法

    在python编写程序的过程中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键& ...

最新文章

  1. 转 深入理解Midlet类
  2. SecureCRT 日志添加时间戳(精确到毫秒)
  3. 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
  4. ES5-16【utils】数组方法、类数组
  5. nginx总结(面试必看)
  6. Silverlight 密码框 Focus
  7. 三年级小孩近视150度需要戴近视眼镜么?
  8. Ubuntu无法进入操作系统的恢复和备份操作
  9. 实战Node:幼教平台幼教资源部分实现
  10. winsock类型病毒后遗症处理
  11. js实现前端数据分页
  12. PC端微信网页打不开
  13. CPU、OpenGL/DirectorX、显卡驱动和GPU之间的关系
  14. 动态内存分配算法:首次适应算法,循环首次适应算法,最坏适应算法,最佳适应算法实现
  15. (rear + maxSize - front) % maxSize 公式的理解
  16. 禁止搜索引擎收录网站内容的几种方法
  17. LeetCode 557 反转字符串中的单词 III
  18. [AGC001E]BBQ Hard
  19. 数字图像处理之位图在计算机中的存储结构
  20. 【Machine Learning】机器学习之一些数学相关的知识储备

热门文章

  1. python测验7答案_中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案
  2. 服务器通用背板管理(UBM)实现
  3. (1)风色从零单排《C++ Primer》 一个简单的c++程序
  4. java程序设计基础教程龚永罡 陈昕 等编著pdf_《Java语言程序设计基础教程》(龚永罡 陈昕)习题答案...
  5. 支付宝-转账到支付宝账号接口(新接口)
  6. PHP设计模式之外观模式
  7. 在DJango中session的使用方法
  8. spring-cloud
  9. WooCommerce适合企业电子商务吗?
  10. zibll子比主题6.4.1开心版 免授权 修复评论弹授权 可做付费下载站 含视频教程