Python字典排序实战:按Key与Value排序的多种实现方案
本文详解Python中字典(Dictionary)的排序方法。由于字典默认无序,文章介绍了利用sort和sorted函数对字典项进行排序的技巧。重点演示了如何按Key值和Value值分别排序,包括使用lambda表达式、tuple交换及列表推导式等多种代码实现,帮助开发者灵活处理数据输出顺序。
Python字典排序概述
Python内置的dictionary数据类型本质上是无序的,主要通过key来检索对应的value。但在实际开发中,经常需要对字典中的条目进行排序输出,排序依据可以是key,也可以是value。那么,究竟有哪些方法可以实现字典内容的排序?以下整理了几种常见且高效的解决方案。
在Python中,对容器内数据进行排序主要涉及两种方式:一是容器自带的sort方法,二是内置的sorted函数。
sort方法与sorted函数的核心区别在于:sort方法是在原容器内部进行排序(in-place),不返回新对象;而sorted函数则会生成并返回一个新的、已排序的容器对象。
按Key值排序的实现方法
1. 按Key值进行排序
按Key排序的代码示例
#最简单的方法,这个是按照key值排序:
def sortedDictValues1(adict):
items = adict.items()
items.sort()
return [value for key, value in items]
#又一个按照key值排序,貌似比上一个速度要快点
def sortedDictValues2(adict):
keys = adict.keys()
keys.sort()
return [dict[key] for key in keys]
#还是按key值排序,据说更快。。。而且当key为tuple的时候照样适用
def sortedDictValues3(adict):
keys = adict.keys()
keys.sort()
return map(adict.get, keys)
#一行语句搞定:
[(k,di[k]) for k in sorted(di.keys())]
#用sorted函数的key参数(func)排序:
#按照key进行排序
print sorted(dict1.items(), key=lambda d: d[0])
按Value值排序的实现方法
2. 按Value值进行排序
按Value排序的代码示例
#来一个根据value排序的,先把item的key和value交换位置放入一个list中,再根据list每个元素的第一个值,即原来的value值,
排序:
def sort_by_value(d):
items=d.items()
backitems=[[v[1],v[0]] for v in items]
backitems.sort()
return [ backitems[i][1] for i in range(0,len(backitems))]
#还是一行搞定:
[ v for v in sorted(di.values())]
#用lambda表达式来排序,更灵活:
sorted(d.items(), lambda x, y: cmp(x[1], y[1])), 或反序:
sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)
#用sorted函数的key参数(func)排序: # 按照value进行排序
print sorted(dict1.items(), key=lambda d: d[1])
字典基础知识回顾
知识点扩展:
预备知识:
在Python中,字典(dictionary)是内置的数据类型,属于无序的存储结构,其基本组成单元为key-value对。
例如:dict = {'username': 'password', 'database': 'master'},其中'username'和'database'是key,'password'和'master'是value。可以通过d[key]获取对应的value,但无法通过value反推key。
关于字典(dictionary),需注意以下几点关键特性:
a、字典的key是区分大小写的;
b、同一个字典中不能存在重复的key;
c、字典是无序的,不包含元素顺序的概念,它仅是键值对的简单排列。
以上就是关于Python字典排序方法的详细介绍,更多相关技巧请参阅本站其他文章或继续浏览后续内容。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









