python list元素为dict时的排序

我的个人博客: alex-my.xyz

# 简单的dict


lst = [('d', 2), ('a', 4), ('b', 3), ('c', 2)]

# 按照value排序
lst.sort(key=lambda k: k[1])
print lst

# 按照key排序
lst.sort(key=lambda k: k[0])
print lst

# 先按value排序再按key排序
lst.sort(key=lambda k: (k[1], k[0]))
print lst

# 输出---->>>

[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
[('a', 4), ('b', 3), ('c', 2), ('d', 2)]
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

# 复杂的dict



lst = [{'level': 19, 'star': 36, 'time': 1},
       {'level': 20, 'star': 40, 'time': 2},
       {'level': 20, 'star': 40, 'time': 3},
       {'level': 20, 'star': 40, 'time': 4},
       {'level': 20, 'star': 40, 'time': 5},
       {'level': 18, 'star': 40, 'time': 1}]

# 需求:
# level越大越靠前;
# level相同, star越大越靠前;
# level和star相同, time越小越靠前;

# 先按time排序
lst.sort(key=lambda k: (k.get('time', 0)))

# 再按照level和star顺序
lst.sort(key=lambda k: (k.get('level', 0), k.get('star', 0)), reverse=True)

for idx, r in enumerate(lst):
    print 'idx[%d]\tlevel: %d\t star: %d\t time: %d\t' % (idx, r['level'], r['star'],r['time'])

# 输出---->>>

idx[0]   level: 20       star: 40        time: 2        
idx[1]   level: 20       star: 40        time: 3        
idx[2]   level: 20       star: 40        time: 4        
idx[3]   level: 20       star: 40        time: 5        
idx[4]   level: 19       star: 36        time: 1        
idx[5]   level: 18       star: 40        time: 1   

时间: 2024-11-01 07:58:04

python list元素为dict时的排序的相关文章

Python collections.OrderedDict解决dict元素顺序问题

编程中遇到个问题,python json.loads时元素顺序可能会发生变化. 这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的. 在网上查了查,结合自己的知识总结一下. 使用dict时,Key是无序的.在对dict做迭代时,我们无法确定Key的顺序. 如果要保持Key的顺序,可以用OrderedDict. OrderedDict的Key会按照插入的顺序排列,不是Key本身排序. 1 #coding=utf-8 2 3 import json 4 import collections

怎么用最简单的代码取出一个集合中每个元素的第一项并排序?

问题描述 怎么用最简单的代码取出一个集合中每个元素的第一项并排序? 比如一个集合:{{GGGD}{BBYH}{DDQP}{AACC}{CCPL}{FFQW}}怎样取出每个元素中的第一项并排序?{ABCDEFG} 解决方案 python实现:使用dict保存集合数据 取出所有key存到list中 使用sorted方法对list排序

在Python中使用全局日志时需要注意的问题

  这篇文章主要介绍了在Python中使用全局日志时需要注意的问题, 作者由uliweb使用时遇到的问题分析全局日志出现错误时的解决方法,需要的朋友可以参考下 在使用 uliweb 开发 soap webservice 后,启动 uliweb 时,werkzeug 的日志莫名其妙丢失了. 正常的日志: 代码如下: [INFO] * Loading DebuggedApplication... [INFO] * Running on http://localhost:8000/ [INFO] *

Python编程中运用闭包时所需要注意的一些地方

  这篇文章主要介绍了Python编程中运用闭包时所需要注意的一些地方,文章来自国内知名的Python开发者felinx的博客,需要的朋友可以参考下 写下这篇博客,起源于Tornado邮件群组的这个问题how to use outer variable in inner method,这里面老外的回答很有参考价值,关键点基本都说到了.我在这里用一些有趣的例子来做些解析,简要的阐述下Python的闭包规则,首先看一个经典的例子: ? 1 2 3 4 5 6 7 8 9 10 11 def foo(

python的pandas模块画图时中文显示不完全

问题描述 python的pandas模块画图时中文显示不完全 如图,使用pandas分析统计数据时,横轴的职业名称实现不全,太长的放不下,求问解决方案. target=pandas.read_csv('zhihu_user_data_30k.csv'encoding='utf-8') city_count=target[u'职位'].value_counts()[:20] plt=city_count.plot(kind='bar'title=""City Statistics&quo

Python基于scrapy采集数据时使用代理服务器的方法_python

本文实例讲述了Python基于scrapy采集数据时使用代理服务器的方法.分享给大家供大家参考.具体如下: # To authenticate the proxy, #you must set the Proxy-Authorization header. #You *cannot* use the form http://user:pass@proxy:port #in request.meta['proxy'] import base64 proxy_ip_port = "123.456.7

XCode 5 的 Xib 编辑器中视图元素未选择时均不可见的问题解决

XCode 5 的 Xib 编辑器中视图元素未选择时均不可见的问题解决 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 暂时还没解决,先凑和把工作做完,后续找到解决办法,再更新本贴! 不要告诉我

python使用sorted函数对列表进行排序的方法_python

本文实例讲述了python使用sorted函数对列表进行排序的方法.分享给大家供大家参考.具体如下: python提供了sorted函数用于对列表进行排序,并且可以按照正序或者倒序进行排列 #创建一个数字组成的列表 numbers = [5, 1, 4, 3, 2, 6, 7, 9] #输出排序后的数字数组 print sorted(numbers) #输出原始数组,并未被改变 print numbers my_string = ['aa', 'BB', 'zz', 'CC', 'dd', "E

sqlServer使用ROW_NUMBER时不排序的解决方法_MsSql

设置sqlServer使用ROW_NUMBER时不排序 --1.看到NHibernate是这样写的分页,感觉写起来比较容易理解(应该不会有效率问题吧?) --with只是定一个别名? [sql] with query as (select ROW_NUMBER() over(order by (select 0)) AS ROWNUM, * FROM Product) select * from query where ROWNUM BETWEEN 5 AND 10 --2.ROW_NUMBER