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 相关文章推荐
pyqt4教程之实现windows窗口小示例分享
Mar 07 Python
Python列表计数及插入实例
Dec 17 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
SVM基本概念及Python实现代码
Dec 27 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
python求质数的3种方法
Sep 28 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
提高python代码运行效率的一些建议
Sep 29 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
js 巧妙去除数组中的重复项
2010/01/25 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
护理学专业推荐信
2013/12/03 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
教育教学工作反思
2016/02/24 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript