python 字典排序
2016-07-26 18:57
363 查看
引言
字典,形如 dic = {'a':1 , 'b':2 , 'c': 3}形式中的元素并没有顺序,所以dic[0]是有语法错误的。并且字典是没有重复的键值。待解决问题
如何根据需要可以根据“键”或“键值”进行不同顺序的排序?函数原型
sorted(dic,value,reverse)dic为待比较字典,value为排序的对象(这里指键或键值),
reverse:注明升序还是降序,True--降序,False--升序(默认)
比如:
>>> dic = {'a':3,'b':2,'c':1} #按键排序 >>> sorted(dic.iteritems(),key = lambda asd:asd[0],reverse = True) [('c', 1), ('b', 2), ('a', 3)] >>> >>> sorted(dic.iteritems(),key = lambda asd:asd[0],reverse = False) [('a', 3), ('b', 2), ('c', 1)] >>> >>> sorted(dic.iteritems(),key = lambda asd:asd[0]) [('a', 3), ('b', 2), ('c', 1)] #按键值排序 >>> sorted(dic.iteritems(),key = lambda asd:asd[1],reverse = True) [('a', 3), ('b', 2), ('c', 1)] >>> >>> sorted(dic.iteritems(),key = lambda asd:asd[1],reverse = False) [('c', 1), ('b', 2), ('a', 3)]
注意:
排序之后原字典没有变,顺序依旧
两个函数
1.lambda
功能: 创建匿名函数
区别: 和def函数定义,以下两点区别
lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量。
lambda它只是一个表达式,而def则是一个语句。
>>> func = lambda x:x+2 >>> func(1) 3 >>> func = lambda x,y:x+y >>> func(1,2) 3
2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对
>>> print dic.iteritems() <dictionary-itemiterator object at 0x7fb26fad8520> >>> print dic.items() [('a', 3), ('c', 1), ('b', 2)]
注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键
([0])或键值(1])
相关文章推荐
- python find()用法
- Python 导入机制 - import hook
- Python学习
- python几大排序算法
- python学习笔记——异常
- Python之文件操作及常用函数
- python操作mysql数据库
- Python自动化之语法基础
- python常用包安装错误
- Python写日志
- python类定义与c#的一些区别
- Python发邮件
- 以写代学:python 列表元素操作&&函数&&模拟入栈出栈脚本
- easy_install 和 pip 的安装及使用
- python 安装yaml
- with statement
- python数据分析笔记(1):搭建python的数据分析环境(Mac系统下)
- 通过代码学习python之@property,@staticmethod,@classmethod
- 习题26 恭喜你,现在可以考试了!
- 【OpenCV】功能说明:Samples里的Python实现