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基于Tkinter实现的记事本实例
Jun 17 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
如何在python中使用selenium的示例
Dec 26 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
Python pymongo模块常用操作分析
Sep 01 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python3 kubernetes api的使用示例
Jan 12 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关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
详解react如何在组件中获取路由参数
2017/06/15 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python实现数值积分方式
2019/11/20 Python
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
乡镇消防工作实施方案
2014/03/27 职场文书
临床医师个人自我评价
2014/04/06 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Ajax常用封装库——Axios的使用
2021/05/08 Javascript