dict过滤 python_python进阶编程技法:1~4

1.

#如何过滤列表,字典,集合:

'''
1.filter 注意要过滤得到的结果要list类型转换
2.列表解析式

'''

from random import randint
#列表过滤
data=[randint(-10,10) for _ in range(10)]
print(data)
#方法1:filter
filter_data=list(filter(lambda x:x>=0 ,data))

print(filter_data)
#方法2:列表解析式 快于filter
filter_data=[x for x in data if x>=0]
print(filter_data)

#字典筛选

stu_info={x:randint(0,101) for x in range(1,11)}
print(stu_info)
filter_info={k:v for k,v in stu_info.items() if v>90 }
print(filter_info)

#集合筛选

set_date=set(data)
print(set_date)
filer_set={x for x in set_date if x%3==0 }
print(filer_set)

2.

如何为元祖中的每个元素命名,提高可读性:

1c944b4b09a3fedfcea97d215fb7df47.png
from collections import namedtuple

stu=('tom',12,'male','5454446@mall.com')

#如果直接用下标获取,可读性下降

#解决方法1:
NAME,AGE,SEX,EMAL=range(4) #分别得到的值是0,1,2,3
print(NAME,AGE,SEX,EMAL) #用大写字母表示常量 python中并没有类似const int之类的常量
#解决方法2:构建一个类namedtuple的子类
#namedtuple 是一个函数,返回tuple的一个子类
#第一个参数是你创建子类的名字 第二个参数是:一系列名字,即每个index的名字
Student=namedtuple('Student',['NAME','AGE','SEX','EMAIL'])
#python中一切皆对象。 这个namedtuple创建的名为Student(等号右边的那个Student) 类也是一个对象,这个对象用Student这个变量表示(等号左边的那个
#构建object
S1=Student(NAME='T',AGE='12',SEX='MALE',EMAIL='EMAIL')
S2=Student('A','12','MALE','EMAIL')
#两种传参方式
print(S1.AGE)
#返回object的参数


3.统计序列元素出现次数

41a64f76d8aebc280fc91febb61b4c6c.png

from random import  randint
#生成随机列表 肯定会出现重复数字
rand_list=[randint(0,20) for _ in range(30)]
print(rand_list)
#方法1:

#创建一个字典,key为randlist 中的元素,value =0

times_dict=dict.fromkeys(rand_list,0) #!!
print(times_dict)
for x in rand_list:
    times_dict[x]+=1

print(times_dict)

#方法2:
from collections import Counter

counter=Counter(rand_list)#Counter 类构造一个实例对象
#构造函数,需要一个sequence

print(counter.most_common(3)) #得到对象中出现前三次的的info




4.根据字典值的大小排序字典

c2dc4a2f9af357f371f6303bd7ab8003.png
from random import  randint

stu={x:randint(0,101) for x in 'abcderf'}
print(stu)
print(sorted(stu))#传入iter可迭代对象排序
#结果:['a', 'b', 'c', 'd', 'e', 'f', 'r'] 没有value了
#方法1:构建元祖  元祖的比较:
'''
(21,'a')>(11,'b')
'''
keys=stu.keys()
values=stu.values()
#得到 stu 字典中的key列表 和value列表
#用zip函数,组装成一个tuple
l=zip(values,keys)
print(sorted((l)))
#结果!:[(22, 'd'), (36, 'e'), (44, 'a'), (47, 'c'), (48, 'r'), (62, 'b'), (70, 'f')]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值