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] 既然说是高阶函数,那么它 ...
随机推荐
- HTML 和 JavaScript 实现飘花的效果
HTML 和 JavaScript 实现飘花的效果,也不算花,就是有悬浮物飘下来,和下雪似的. 也是不需要图片和其他的 js 脚本做辅助,其实已经全写在 HTML 文件中了. <html> ...
- troubleshooting-When importing query results in parallel, you must specify --split-by.
原因分析 -m 4 \ 导数命令中map task number=4,当-m 设置的值大于1时,split-by必须设置字段(需要是 int 类型的字段),如果不是 int类型的字段,则需要加上参数- ...
- Linux系统对IO端口和IO内存的管理
引用:http://blog.csdn.net/ce123_zhouwei/article/details/7204458 一.I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
- bzoj 3505 数三角形 - 组合数学
给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和n. Output 输出 ...
- linux内核启动参数解析及添加
1.环境: ubuntu16.04 Linux jello 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x ...
- HDU 3974 Assign the task(DFS序)题解
题意:给出一棵树,改变树的一个节点的值,那么该节点及所有子节点都变为这个值.给出m个询问. 思路:DFS序,将树改为线性结构,用线段树维护.start[ ]记录每个节点的编号,End[ ]为该节点的最 ...
- ISSCC 2017论文导读 Session 14:A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Pro
A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Processor and a CIS Integrate ...
- 学习mybatis-3 step by step 篇四
日志 Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪 ...
- WPF基础学习笔记整理 (七) Binding绑定
基础知识: 数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性:目标对象始终是依赖属性,而源对象则可以是任何内容. BindingOperations类,提供静态 ...