Skip to main content
 首页 » 程序教程

Python列表、字典等筛选数据的技巧

2016年08月25日28300

Python的列表、字典或者集合中如何进行数据筛选呢?首先想到的当然是最简单的,使用循环语句进行筛选。下面的在列表、字典或者集合中进行数据筛选的技巧来源与慕课网的《Python进阶强化训练》中的内容。以下是相关的学习笔记。

实例一、过滤列表中的负数

主要的思路是使用列表生成式的方式去进行列表的筛选。或者使用filter函数,调用lambda函数筛选。但是列表生成式的效率更高。下面是实例代码:

#!/usr/local/env python
# coding:utf-8
from random import randint
__author__ = "风轻情淡"
# 生成10个随机整数的列表
data = [randint(-10, 10) for _ in range(10)]
# filter函数生成的是一个filter对象,需要再迭代取值
ret1 = filter(lambda x: x < 0, data)
print(ret1)
# 列表生成式方式直接获得列表,速度比filter函数方式要快一些
ret2 = [x for x in data if x < 0]
print(ret2)

实例二、筛选字典值高于90的项目

字典筛选的思路跟列表筛选差不多,使用字典生成式。需要注意的是:Python 3.x 里面,iteritems() 和 viewitems() 这两个方法都已经废除了,而 items() 得到的结果是和 2.x 里面 viewitems() 一致的。在3.x 里 用 items()替换iteritems() ,可以用于 for 来循环遍历。下面是实例代码:

#!/usr/local/env python
# coding:utf-8
from random import randint

__author__ = "风轻情淡"
# 生成20个成绩的字典
data = {x: randint(60, 100) for x in range(1, 21)}
# 使用字典生成式,可以直接筛选数据
ret1 = {k: v for k, v in data.items() if v > 90}
print(ret1)

实例三、筛选能被3整除的元素

集合的处理思路和列表处理的思路基本是一致的,实例代码如下:

#!/usr/local/env python
# coding:utf-8
from random import randint

__author__ = "风轻情淡"
# 生成10个随机整数的列表
data = [randint(-10, 10) for _ in range(10)]
# 把列表转化为集合
s1 = set(data)
# 集合生成式方式直接获得结果
ret1 = {x for x in s1 if x % 3 == 0}
print(ret1)

以上的数据筛选方式,都是使用的生成式的方式,相对比较简洁高效。

评论列表暂无评论
发表评论