专栏首页Python工程师【项目实战】自监控-03-列表排序

【项目实战】自监控-03-列表排序

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2

  • 这个系列主要是实际在做项目的一个笔记
  • 自监控项目,主要是对采集的质量监控数据做的一个实时预警
  • 今天讲讲列表的排序sort

今日歌曲:

Part 1:问题概述

  1. 当我们使用os.listdir(path)获取文件夹下文件时,会得到一个按照特定顺序排列的文件名列表
  2. 因要求按照某一特定(非默认)顺序依次处理这些文件,特定条件为每个文件内部自带的时间信息
  3. 所以问题是:结合每个文件自带的时间信息,如何对这些文件名进行重新排序
  4. 假设已经获取每个文件对应的时间,每个文件信息由一个元组来表示,即:(文件名,时间信息)
  5. 在本示例中时间表示为datetime.datetime(year=2017, month=7, day=6,hour=11, minute=12, second=30)

Part 2:代码

import datetimex1 = datetime.datetime(year=2017, month=7, day=6,
                      hour=11, minute=12, second=30)
x2 = datetime.datetime(year=2017, month=7, day=6,
                      hour=15, minute=12, second=30)
x3 = datetime.datetime(year=2017, month=8, day=6,
                      hour=15, minute=12, second=30)
x4 = datetime.datetime(year=2016, month=8, day=6,
                      hour=15, minute=12, second=30)file_sort = [("1.txt", x1), ("2.txt", x2), ("3.txt", x3), ("4.txt", x4)]
print("排序前", file_sort, "\n")file_sort.sort(key=lambda x: x[1])
print("排序后:", file_sort)file_new = [x[0] for x in file_sort]
print("file_new=", file_new)

代码截图

Part 3:部分代码解读

  1. file_sort.sort(key=lambda x: x[1])使用了列表的排序
    • key定义参与排序的关键字,本文参与排序的是datetime
    • sort另外还有一个参数reverse,取值为True则降序排列
  2. lambda x: x[1]是一种匿名函数,格式为:lambda 参数:表达式1 if 条件 else 表达式2
    • 其中后面的判断语句可以没有
    • 若有判断语句,if 条件成立,则函数返回表达式1,否则返回表达式2
    • 示例可以见下图
  3. file_new = [x[0] for x in file_sort]列表推导式,取列表中每个元组的第一个数据,可参考:【项目实战】自监控-02-os

lambda代码示例


以上为本次的学习内容,下回见

本文分享自微信公众号 - Python工程师(DatenSpiel),作者:Z

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python-时间及日期-05-日期及时间生成

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • Python-入门-03- 三大结构

    zishendianxia
  • Python-时间及日期-04-时间加减法

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • Python中字符串和datetime

    今天在写一个爬虫时,需要将今天的数据和昨天、一周前的数据做比较。所以就需要一个方法可以方便的计算出指定日期的前几天的日期。比如10月3号,则一周前的日期是9月2...

    SuperHeroes
  • 使用Nginx过滤网络爬虫

    现在的网络爬虫越来越多,有很多爬虫都是初学者写的,和搜索引擎的爬虫不一样,他们不懂如何控制速度,结果往往大量消耗服务器资源,导致带宽白白浪费了。

    疯狂的技术宅
  • python抓取数据构建词云

    词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。

    周小董
  • 深入浅出OOP(二): 多态和继承(继承)

    本文是深入浅出OOP第二篇,主要说说继承的话题。 继承的介绍 在OOP中,继承有如下的定义: 继承是一种OOP的机制,用于派生继承预定义的类 在这个继承关系中,...

    葡萄城控件
  • Python AI 教学 |决策树绘制函数介绍

    前面的推文Python AI 教学 | 决策树算法及应用中我们已经介绍了如何从数据集中创建树,我们是用字典类型来存储决策树的,然而字典的表示形式非常不易于理解,...

    用户1621951
  • Python AI 教学 |决策树绘制函数介绍

    前面的推文Python AI 教学 | 决策树算法及应用中我们已经介绍了如何从数据集中创建树,我们是用字典类型来存储决策树的,然而字典的表示形式非常不易于理解,...

    短短的路走走停停
  • 使用Python往Elasticsear

    1. index 这是很简单的一个插入数据的方法,每条数据调用一个index方法,代码如下

    py3study

扫码关注云+社区

领取腾讯云代金券