# 如何在列表、字典,集合中根据条件帅选数据?

# 解决方案:

#列表:fiter函数:fiter(lambda x:x>=0,data)
# 列表解析:[x for x in data if x>=0]

#字典解析:{k:v for k,v in d.iteritems() if v >90}

#集合解析:{x for x in s if x % 3 == 0}

# 列表创建字典 {x : 列表名称 for x in 另一个}
# data1 = [1,2,3,4,5,6,7]
# data2 = [1,2,3,4,5,6,7]
# dict1 = {x:y for x in data2 for y in data1}
# print(dict1)
# 然后判断他的值大于4的
# {k : v for k,v in dict1.iter() if v > 4}
zero, one, two, three, fous, five, six, seven, eight, nine = range(10)
"""
Author:Cairo
"""
from random import randint
from collections import Counter
import re
# 如何统计序列中元素的出现频度?
# 1,某随机序列[12,3,5,6,5,5,5,7,7,7,88,888,88,88]中找到出现的次数最高的3个元素,他们出现的次数是多少
# data = [randint(0,20) for _ in range(30)]
# # 这样需要统计的话,应该是产生的是一个字典,而我们的key就是我们的元素
# # 然后创建一个字典
# dataC = dict.fromkeys(data,0)
# for x in data:
#     dataC[x] += 1
# print(dataC)
# # Counter(data) 制作成一个新的列表
# dataC2 = Counter(data).most_common(3)
# print(dataC2)
# 最后的频度解决方案:使用collections.Counter对象
# 将序列传入Counter的构造器,得到Counter对象是频度的字典
# Counter.most_common(n)方法得到频度最高的n个元素的列表



# 2.对某英文文章的单词,进行词频统计,找到出现的次数最高的10个单词,他们出现次数是多少

# 用正则》》:读入一个文件txt = open(文件名).read()
# 然后用正则把整个字符串分割 re.split("\W+",txt) "\W+"非字母
#然后可以像上面一样了




# 根据成绩高低,计算学生排名 ,某班的英语以字典的形式存储
# 两种解决方案:1、利用zip将字典数据转化为元组
zipP = { x : randint(60,100) for x in "xyzabc"}
print(zipP)
# 注意:Python2.x的zip函数直接返回的是一个列表元组,Python3.x版本已经改成返回一个迭代器了
Zip = zip(zipP.values(),zipP.keys())##使用这个会造成很大的空间浪费
ZIP = [x for x in Zip]
ZIP = sorted(ZIP)
print(ZIP)
# 2、传递sorted函数的key参数
zero, one, two, three, fous, five, six, seven, eight, nine = range(10)
"""
Author:Cairo
"""
'''
如何快速找到多个字典中的公共键(key)?
实际案例:
    西班牙足球甲级联赛,每轮球员进球统计:
        第一轮:{'1':1,'梅西':2,'本则吗':1}
        第er轮:{'3':2,'托雷斯':2,'本则吗':5}
        第san轮:{'3':1,'梅西':3,'内尔吗':1}
    统计出前N轮,每场比赛都有进球的球员。

'''
from random import randint , sample
# 随机3,6个球员进球
# 使用字典解析成一个字典,产生三轮数据
oneBall = {x:randint(1,4) for x in sample('abcdefg',randint(3,6))}
print(oneBall)
twoBall = {y:randint(1,4) for y in sample('abcdefg',randint(3,6))}
print(twoBall)
threeBall = {z:randint(1,4) for z in sample('abcdefg',randint(3,6))}
print(threeBall)
# oneBall.keys()转成集合,然后在做交集
print(oneBall.keys() & twoBall.keys() & threeBall.keys())

猜你喜欢

转载自www.cnblogs.com/ArtisticMonk/p/9090611.html