python dict sorted 排序
https://www.cnblogs.com/linyawen/archive/2012/03/15/2398292.html
我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。
#最简单的方法,这个是按照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())]
#来一个根据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= 参数排序:
# 按照key进行排序
print sorted(dict1.items(), key=lambda d: d[0])
# 按照value进行排序
print sorted(dict1.items(), key=lambda d: d[1])
下面给出python内置sorted函数的帮助文档:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
看了上面这么多种对dictionary排序的方法,其实它们的核心思想都一样,即把dictionary中的元素分离出来放到一个list中,对list排序,从而间接实现对dictionary的排序。这个“元素”可以是key,value或者item。
#################################################################################
一上转
按照value排序可以用
sorted(d.items, key=lambda d:d[1])
若版本低不支持sorted
将key,value 以tuple一起放在一个list中
l = []
l.append((akey,avalue))...
用sort()
l.sort(lambda a,b :cmp(a[1],b[1]))(cmp前加“-”表示降序排序)
dic={'a':1,'c':3,'b':22}
#d[0]表示用key排序,d[1]表示用value排序
print sorted(dic.items(), key=lambda d: d[0])
print sorted(dic.items(), key=lambda d: d[1])
#用内置函数排序只返回key值的列表
#或反序:x[0],y[0] 表示用key排序,想x[1],y[1]表示用value排序
dic=sorted(dic.items(), lambda x, y: cmp(x[0], y[0])),
print dic
dic3 = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict3= sorted(dic3.iteritems(), key=lambda d:d[0]) #d[0]表示字典的键
print dict3
list01=[
{'name':'joe','age':18},
{'name':'susan','age':19},
{'name':'tom','age':17}
]
print sorted(list01)
dic=sorted(list01,key=lambda x:x['age'],reverse=True)
print dic
dic=sorted(list01,key=lambda x:x['name'])
print dic
python dict sorted 排序的更多相关文章
- python的sorted排序具体解释
排序.在编程中常常遇到的算法.我也在几篇文章中介绍了一些关于排序的算法. 有的高级语言内置了一些排序函数.本文讲述Python在这方面的工作.供使用python的程序猿们參考,也让没有使用python ...
- Python - DICT 字典排序 - OrderedDict
官方地址: https://docs.python.org/2/library/collections.html#collections.OrderedDict >>> # regu ...
- [Python] dict字典排序和多条件排序
利用lambda实现排序:要实现多条件排序,只需要依次指定排序的标准,具体实现如下 counter = {'是': 1, '不是': 1, '你': 3} counter_list = sorted( ...
- python sorted排序用法详解
sorted排序 python sorted 排序 1. operator函数在介绍sorted函数之前需要了解一下operator函数. operator函数是python的内置函数,提供了一系列常 ...
- Python dict 按键和值排序
python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行:1 下面的是按照value的值从大到小的顺序来排序. ...
- 深入Python(1): 字典排序 关于sort()、reversed()、sorted()
http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...
- python sorted排序
python sorted排序 Python不仅提供了list.sort()方法来实现列表的排序,而且提供了内建sorted()函数来实现对复杂列表的排序以及按照字典的key和value进行排序. s ...
- python中sorted()和set()去重,排序
前言 在看一个聊天机器人的神经网络模型训练前准备训练数据,需要对训练材料做处理(转化成张量)需要先提炼词干,然后对词干做去重和排序 words = sorted(list(set(words))) 对 ...
- python高阶函数——sorted排序算法
python 内置的sorted()函数可以对一个list进行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然说是高阶函数,那么它 ...
随机推荐
- 20145101《Java程序设计》第4周学习总结
20145101<Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 继承:避免多个类间重复定义共同行为. 把相同代码提升为父类 运用extends关键字的子类会继承扩 ...
- BZOJ 1503 郁闷的出纳员(splay)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题意:给出一个数列(初始为空),给出一个最小值Min,当数列中的数字小于Min时自动 ...
- Python3基础 getattr 获取对象的指定属性值
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- vim的加密和解密?
vim中出现的错误提示含义: 参考: http://blog.csdn.net/u014599371/article/details/43955169 E488: trailing character ...
- Pandas fillna('Missing')
https://blog.csdn.net/donghf1989/article/details/51167083/ .使用0替代缺失值(当然你可以用任意一个数字代替NaN) df.fillna(0) ...
- POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解
题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做.A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h ...
- [luoguP1119]灾后重建
题目链接 毒瘤题 卡spfa 可能dij也卡,没试过 然后放floyd过了 但其实spfa很好打,虽然只有60 让我们来分析一下spfa的效率,假设这个出题人极其毒瘤,出网格图 又因为是在线询问,所以 ...
- LLDP协议、STP协议 笔记
参考: 数据链路层学习之LLDP 生成树协议 LLDP协议.STP协议 笔记 LLDP 提出背景: 随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加 ...
- NRF24L01 射频收发 使用方法
在干啥 这两天在调nrf24l01,最终还是参考正点原子的例程才调通,看芯片手册太难了 还要说啥废话 废话说到这,接下来上代码 SPI协议 spi.c #include "spi.h&quo ...
- python filter函数
number_list = range(-, ) less_than_zero = list(filter(lambda x: x < , number_list)) print(less_th ...