Python按照list dict key进行排序过程解析


Posted in Python onApril 04, 2020

在做项目的时候,遇到这样的数据:

"trends": [
        {
          "name": "Rick Gates",
          "promoted_content": null,
          "query": "%22Rick+Gates%22",
          "tweet_volume": 135732,
          "url": "http://twitter.com/search?q=%22Rick+Gates%22"
        },
        {
          "name": "#TheBachelorette",
          "promoted_content": null,
          "query": "%23TheBachelorette",
          "tweet_volume": 91245,
          "url": "http://twitter.com/search?q=%23TheBachelorette"
        },
        {
          "name": "#KremlinAnnex",
          "promoted_content": null,
          "query": "%23KremlinAnnex",
          "tweet_volume": 42654,
          "url": "http://twitter.com/search?q=%23KremlinAnnex"
        },
        {
          "name": "#LHHH",
          "promoted_content": null,
          "query": "%23LHHH",
          "tweet_volume": 35252,
          "url": "http://twitter.com/search?q=%23LHHH"
        }]

我需要做的就是根据tweet_volume的数值对trends里的元素进行排序。

实现代码:

把上面数据以字典的方式获取,相当于把取出的就是后面的列表,即

trends=[
        {
          "name": "Rick Gates",
          "promoted_content": null,
          "query": "%22Rick+Gates%22",
          "tweet_volume": 135732,
          "url": "http://twitter.com/search?q=%22Rick+Gates%22"
        },
        {
          "name": "#TheBachelorette",
          "promoted_content": null,
          "query": "%23TheBachelorette",
          "tweet_volume": 91245,
          "url": "http://twitter.com/search?q=%23TheBachelorette"
        },
        {
          "name": "#KremlinAnnex",
          "promoted_content": null,
          "query": "%23KremlinAnnex",
          "tweet_volume": 42654,
          "url": "http://twitter.com/search?q=%23KremlinAnnex"
        },
        {
          "name": "#LHHH",
          "promoted_content": null,
          "query": "%23LHHH",
          "tweet_volume": 35252,
          "url": "http://twitter.com/search?q=%23LHHH"
        }]

trends = sorted(trends,key = lambda e:e['tweet_volume'],reverse = True)

考虑到有些数据是NULL,因此需要提前做个处理,对于空的tweet_volume设置为0,完整代码:

for item in trends:
  if(item.get('tweet_volume') is None):
    item['tweet_volume'] = 0
  trends = sorted(trends,key = lambda e:.get('tweet_volume') ,reverse = True)

建议用get方式获取,空值或数据不存在这样不会报错。

在Python文档中看到一种性能更高的方法

通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构

因此上面的程序可以改写成

from operator import itemgetter
for item in trends:
  if(item.get('tweet_volume') is None):
    item['tweet_volume'] = 0
trends = sorted(trends,key = itemgetter('tweet_volume'),reverse = True)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中apply函数的用法实例教程
Jul 31 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
Python中元组,列表,字典的区别
May 21 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
解决python运行启动报错问题
Jun 01 Python
python可视化大屏库big_screen示例详解
Nov 23 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 Python
Django高并发负载均衡实现原理详解
Apr 04 #Python
Django调用支付宝接口代码实例详解
Apr 04 #Python
基于python检查SSL证书到期情况代码实例
Apr 04 #Python
python zip,lambda,map函数代码实例
Apr 04 #Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 #Python
150行Python代码实现带界面的数独游戏
Apr 04 #Python
Python decorator拦截器代码实例解析
Apr 04 #Python
You might like
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
php常见的魔术方法详解
2014/12/25 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
破解Session cookie的方法
2006/07/28 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JS继承用法实例分析
2015/02/05 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python处理Excel文件实例代码
2017/06/20 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python hashlib加密实现代码
2019/10/17 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
如何在python中实现线性回归
2020/08/10 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
班队活动设计方案
2014/01/30 职场文书
优秀医生事迹材料
2014/02/12 职场文书
应届毕业生自荐信
2015/03/04 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
老乡会致辞
2015/07/28 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android