python(46):对字典进行排序
2017-08-24 17:03
561 查看
原文地址:
http://www.cnblogs.com/kaituorensheng/archive/2012/08/07/2627386.html
注:改于2017-12-07,python3 下
Removed dict.iteritems(), dict.iterkeys(), and dict.itervalues().
Instead: use dict.items(), dict.keys(), and dict.values() respectively.
字典,形如 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的。并且不可以有重复的键值,所以 dic.add['c'] = 4后,字典变成 {'a':1 , 'b':2 , 'c': 4}.
dic为比较函数,value 为排序的对象(这里指键或键值),
reverse:注明升序还是降序,True--降序,False--升序(默认)
注意
排序之后原字典没有变,顺序依旧
例子中“键-值”对中的值是字典,例子对其进行排序。
那如果“键值”对中值字典的某一特定键不存在,咋处理呢,参考
功能: 创建匿名函数
区别: 和def函数定义,以下两点区别
lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量
lambda它只是一个表达式,而def则是一个语句
案例:
2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对
案例:
注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键([0])或键值(1])
http://www.cnblogs.com/kaituorensheng/archive/2012/08/07/2627386.html
注:改于2017-12-07,python3 下
Removed dict.iteritems(), dict.iterkeys(), and dict.itervalues().
Instead: use dict.items(), dict.keys(), and dict.values() respectively.
字典,形如 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--升序(默认)
案例1
dic = {'a':3 , 'b':2 , 'c': 1}注意
排序之后原字典没有变,顺序依旧
案例2
>>> a_dic = {'a':{'val':3}, 'b':{'val':4}, 'c':{'val':1}} >>> dict= sorted(a_dic.iteritems(), key=lambda d:d[1]['val'], reverse = True) >>> dict [('b', {'val': 4}), ('a', {'val': 3}), ('c', {'val': 1})]
例子中“键-值”对中的值是字典,例子对其进行排序。
那如果“键值”对中值字典的某一特定键不存在,咋处理呢,参考
>>> a = {'a':{'val':3}, 'b':{'val':4}, 'c':{'val':1}, 'd':{'val2':0}} >>> a {'a': {'val': 3}, 'c': {'val': 1}, 'b': {'val': 4}, 'd': {'val2': 0}} >>> dict= sorted(a.iteritems(), key=lambda d:d[1]['val'], reverse = True) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <lambda> KeyError: 'val' >>> dict= sorted(a.iteritems(), key=lambda d:d[1].get('val',0), reverse = True) >>> dict [('b', {'val': 4}), ('a', {'val': 3}), ('c', {'val': 1}), ('d', {'val2': 0})]
两个函数
1.lambda功能: 创建匿名函数
区别: 和def函数定义,以下两点区别
lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量
lambda它只是一个表达式,而def则是一个语句
案例:
2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对
案例:
注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键([0])或键值(1])
相关文章推荐
- python - 字典按key或者value进行排序(sorted)
- Python高效编程-对字典的值进行排序
- python 对字典进行排序
- python字典按照value进行排序
- python_如何对字典进行排序?
- Python sorted 函数,对字典按值进行排序
- 005_004 Python 统计值 并按照次数排序 可以通过字典的值对key进行排序
- python对列表中的字典进行排序
- Python中对字典按其键值进行排序
- python【4】根据字典中值的大小,对字典的键进行排序
- python3使用operator.itemgetter对字典进行排序
- 【Python基础】之对字典进行排序操作(sort by the values of dict)
- python学习——采用sorted方法对字典的键、值进行排序
- python高效编程技巧4(如何根据字典中值的大小,对字典的项进行排序)
- Python利用公共键如何对字典列表进行排序详解
- python 对字典按照value进行排序
- python sorted函数(结合使用lambda和operator.itemgetter()来对字典进行排序)
- python_对字典进行排序
- [python]对字典进行排序
- python对字典进行排序实例