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的汉字转GBK码实现代码
Feb 19 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
Python第三方库的安装方法总结
Jun 06 Python
Python环境变量设置方法
Aug 28 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python3安装crypto出错及解决方法
Jul 30 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 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
杏林同学录(三)
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
python实现井字棋游戏
2020/03/30 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
python爬虫超时的处理的实例
2018/12/19 Python
python用什么编辑器进行项目开发
2020/06/17 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
2014年母亲节寄语
2014/05/07 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
任命书格式范文
2015/09/22 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
Redis keys命令的具体使用
2022/06/05 Redis
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android