python高级数据筛选_python高级编程,列表字典集合相关的数据筛选

1_z3Qsj0R.jpg

每天坚持学习一点,进行数据复盘,学习就是不一样

python高级编程,列表字典集合相关的数据筛选

#先看看第一个列表筛选 2017 9 16 高效python编程的一个案例:from random import randint

data = [randint(-10, 10) for _ in random(10)] # 这行代码就是随机生成10从-10到10的随机

数组成的列表

下面通过一个筛选出 大于0的数字

screen = [x for x in data if x >= 0]

就可以得到相关的筛选数据出来

还有一个方式就是 filter

screen = filter(lambda x: x>=0, data)

也可以筛选出相关的数据 但是注意这个是返回的可迭代的对象,但是效率没有上面列表解析快

下面我们针对 字典进行相关的数据筛选吧

首先创建一个 20个人的 60-100分的 一个字典对象

data = {x: randint(60, 100) for x in random(1, 21)}

上面就创建了这个对象 x 对应的后面 for表达式里面的随机数作为key 后面是 value

下面我们筛选出大于90分的学生编号

screen = {key:value for key, value in data.items() if value > 90}

这里就筛选出来了

下面通过上面的列表 data 进行 集合 set的筛选

newData = set(data)

screen = {x for x in newData if x >= 0}

上面这个也可以得到相关的一些数据 if后面就是条件表达式.

# 下面我们看下如果是一个固定的数据 那么我们肯定首选元祖

person = ('姬寅', 32, '男', '全栈编程与讲师', '148301206@qq.com')

# 通过上面这个代码 我们就定义了 一个元祖 但是知道元祖的都明白如果想要访问

# 都是要通过索引index来获取的,有没有更好的语义化的访问呢下面通过一个方式访问

NAME, AGE, SEX, OCCUPATION, EMAIL = range(5)

print(person[NAME])

# 下面也可以通过一个内置的方法进行更换元祖

from collections import namedtuple

person = namedtuple('person', ['name', 'age', 'sex', 'occupation', 'email'])

# person = person('姬寅', 32, '男', '全栈编程与讲师', '148301206@qq.com')

# print(person.name)

# 也可以通过参数方式进行定义

person = person(name='姬寅', age=32, sex='男', occupation='全栈编程与讲师', email='148301206@qq.com')

print(person.name)

# 判断是不是谁的子类 用下面的方式

print(isinstance(person, tuple))

# 下面统计随机出现频率最多的三个元素

# 创建一个随机序列

data = [randint(0, 20) for _ in range(20)]

# 创建一个字典 将data作为key 0作为默认的value

screen = dict.fromkeys(data, 0)

for x in data:

screen[x] += 1

# 这个样子得到的screen就得到了出现次数

# 但是要得到相关的出现频率最多的 可以通过下面这个函数

from collections import Counter

screen2 = Counter(data)

print(screen2.most_common(3))下面我们在通过一个案例 就是一篇文章英文单词出现频率最多的3个

首先通过正则表达式 和 读入一个文件 案例如下

import re

text = open('文件.txt').read()

text2 = Counter(re.split('\w+', text)) # 以非字母的进行分割

print(text2.most_common(3)) # 就得到了想要的答案

# 下面通过一个案例 如何通过字典的中值的大小 进行排序

students = {x: randint(60, 100) for x in 'abcdef'}

# 如果直接使用排序函数 sorted 的话 只能返回键

print(sorted(students))

# 下面通过zip函数 对上面的字典进行转换为 元祖

newScreen = zip(students.itervalues(), students.iterkeys())

sorted(newScreen )

# 还有一个方式不用zip方法 用sorted 的key 方法

sorted(students.items(), key= lambad x : x[1])

# 也可以和上面的效果一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值