【Python】字典相关

本文介绍了Python中字典、集合、生成器和迭代器的基础知识与应用场景。包括如何创建空字典和集合,生成器的使用方式,以及如何通过for循环遍历生成器。同时,展示了如何统计列表中元素的频率,生成特定格式的银行卡号和密码。此外,还讲解了如何对学生成绩进行冒泡排序,计算平均分和优秀率,并输出90分以上学生的成绩。最后,提供了多种方法创建以特定格式开始的银行卡号及其默认密码。
部署运行你感兴趣的模型镜像

1.可以使用{}或dict()创建空字典,但若要创建空集合只能用set函数

2.将列表生成表达式中的一对中括号改为一对小括号即可得到生成器

对于生成器对象,也可以像其他可迭代对象一样使用for循环遍历对象中的每一个元素

如果生成元素的方法比较复杂,不适合用for循环方式实现,我们还可以借助yield关键字利用函数实现生成器的功能

生成器是一个迭代器,元素用时才生成

3.列表是可迭代对象、但不是迭代器,需用iter函数转化为迭代器;而生成器既是可迭代对象、又是迭代器

4.dict3 = {[4,5,6]: “uesr”}不能创建一个字典,因为列表不可哈希

5.type({}) == set False# 空大括号是字典类型<class 'dict'>

6.d2=dict().fromkeys(['radius','height'],0)# 创建字典,键值都为0

d2.update(radius=10)# 更新,原来有的就改值,没有的就添加

height=d2.pop('height','not found')# 删除键值对,若找不到该键返回'not found'

print(len(d2))# 查键值对个数

# 随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。

import random
x = [random.randint(1,20) for i in range(50)]
r = dict()
print(x)
for i in x:
    r[i] = r.get(i,0)+1
for k, v in r.items():
    print(k, v)

  1. 生成100个银行卡号,   卡号以62012022开头, 后面3位依次是(001,002,003…..100);
  2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为(‘123456’)或为随机六位数(可选择一种方法);
  3. 输出卡号和密码信息。

法一

import random
card = ["62012022"+str(i).zfill(3) for i in range(1,101)]# 不足三位用0填充
password = dict(zip(card,[str(random.randint(100000,1000000)) for i in range(100)]))#100个六位随机数
print(password)

法二

#%方法
card = ["62012022"+"%03d"%i for i in range(1,101)]
password = {}.fromkeys(card,'123456')
print(password)
#format方法
card = ["62012022"+"{:>03d}".format(i) for i in range(1,101)]
password = {}.fromkeys(card,'123456')
print(password)
#f""方法
card = ["62012022"+f"{i:>03d}" for i in range(1,101)]
password = {}.fromkeys(card,'123456')
print(password)

# 将学生成绩按照从高到低排序并输出,并打印出班级平均分以及优秀率(成绩>= 90为优秀,小数点后保留两位),再打印出成绩在90分以上学生的姓名及成绩。

from decimal import *
form = {'Aaa':80,'Bbb':75,'Ccc':88,'Ddd':65,'Eee':90,'Fff':95,'Ggg':58,'Hhh':86,'Iii':78}
name = [i for i in form.keys()]
score = [j for j in form.values()]# 获取相关列表
stu = 0# 优秀学生个数
excellent = {}# 优秀学生字典
for i in range(len(score)):
    for j in range(i+1,len(score)):
        if score[i]<score[j]:
            score[i],score[j]=score[j],score[i]
            name[i],name[j]=name[j],name[i]# 冒泡排序
    if score[i] >= 90: 
        stu = stu + 1# 计算优秀学生个数
        excellent[name[i]]=score[i]# 写入优秀学生键值对
form = dict(zip(name,score))# 排序后成绩转化成字典
ave = Decimal(sum(score))/Decimal(len(score))# 班级平均分
stu = Decimal(stu)/Decimal(len(score))# '班级优秀率
ave = ave.quantize(Decimal("0.00"),ROUND_HALF_UP)# 四舍五入
stu = stu.quantize(Decimal("0.00"),ROUND_HALF_UP)
print('由高到低成绩:\n',form)
print('班级平均分',ave)
print('班级优秀率',stu)
print('90分以上学生:\n',excellent)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*Min*

写的不好多多包涵~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值