Python按照list dict key进行排序过程解析
时间:2022-07-28
本文章向大家介绍Python按照list dict key进行排序过程解析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在做项目的时候,遇到这样的数据:
"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)
以上就是本文的全部内容,希望对大家的学习有所帮助。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [Web] CSS 中 Display(显示) 与 Visibility(可见性)的区别与用法
- [数据结构] 二叉搜索树的CURD(增删改查)操作
- Python 为什么用 # 号作注释符?
- Logging with ElasticSearch, Kibana, ASP.NET Core and Docker
- 【DB笔试面试843】在Oracle中,解释GLOBAL_NAMES设为TRUE的用途。
- SpringBoot 返回 json 数据以及数据封装(万字长文)
- 内核级木马与病毒攻防:Linux可执行文件的ELF格式描述
- 「 思考 」 React Hooks 的设计哲学
- JMeter之Json提取器详解
- nodejs 图片处理工具 gm 的使用!
- Java 进程内存分布
- Web 游戏监听浏览器返回点击事件 !
- 权限维持_Linux操作系统后门
- Linux入门学习笔记(一)
- CMD命令笔记总结