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快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
python生成器与迭代器详解
Jan 01 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
Python 处理文件的几种方式
Aug 23 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
Python退出时强制运行一段代码的实现方法
Apr 29 Python
如何把python项目部署到linux服务器
Aug 26 Python
聊聊python中的异常嵌套
Sep 01 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者的疑难问答(2)
2006/10/09 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
深入解析Python中的lambda表达式的用法
2015/08/28 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
结构和类有什么异同
2012/07/16 面试题
晚宴邀请函范文
2014/01/15 职场文书
三年级音乐教学反思
2014/01/28 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
七夕活动策划方案
2014/08/16 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
年会邀请函范文
2015/01/30 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers