1. 字典的定义
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
字典不能切片,不能排序,可以根据键key来索引,也可以使用get方法,取出某个key对应的value。直接取如果不存在会报错,如果用get方法会返回空,也可以指定默认返回值。
2. 字典的增删改查操作
可以单个增加也可以批量增加,s6=66这种方式会默认为字符串形式
Del删除指定的key键值对没有返回值,pop删除指定的键值对有返回值,popitem弹出并删除一个(最后一个)的键值对,一般来说随机,会返回键值对,不用指定,当空时会报错
清空字典 clear()
单个修改和批量修改。Update既可以增加也可以修改
3. 字典和列表的应用场合
#对字典跑循环
#zip函数,把两个序列合成一个
print(list(zip([1,2,3,4],[11,22,33,44])))
#输出[(1, 11), (2, 22), (3, 33), (4, 44)]
print(dict(zip([1,2,3,4],[11,22,33,44])))
mmb=dict(zip(range(64),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"))
print(mmb)
#遍历全部的key
for k in mmb:
print(k)
print("-"*60)
for k in mmb.keys():
print(k)
print("-"*60)
#遍历全部的vlaue
for v in mmb.values():
print(v)
print("-"*60)
#遍历全部的key-vlaue对
for k,v in mmb.items():
print(k,v)
print("-"*60)
字典操作速度快,费内存;列表操作速度慢,省内存
4. 字典内置函数和方法
内置函数
内置方法
5. 集合的定义
集合(set)是一个无序的不重复元素序列
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
6. 集合的常用操作
列表去重
身份关系运算
基本操作
pop不指定值,随机删除 然而在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)
删除不存在的对象,remove会报错discard不会
7. 集合的运算
#集合运算
s1=set(range(0,100,2)) #100以内的偶数
s2=set(range(0,100,3)) #100以内能被三整除的数
#输出能被6整除的数 交集
print(s1&s2)
print(s1.intersection(s2))
#输出能被2或者3整出的数 并集
print(s1|s2)
print(s1.union(s2))
#输出能被2整除不能被3整除的数 差集
print(s1-s2)
print(s1.difference(s2))
#输出能被3整除不能被2整除的数 差集
print(s2-s1)
print(s2.difference(s1))
#输出能被3整除不能被2整除或者能被2整除不能被3整除的数 差集
print(s2^s1)
print(s1.symmetric_difference(s2))
8. 集合的内置函数
9. requests模块的安装与使用
pip install requests
安装完成后进入pythonimport requests 如果没有报错则安装完成
10. 练习一:学生信息管理(字典版)
#学生信息管理(字典版)
#学生记录:{学号:[语文分,数学分]}
db={"1701":[66,55],"1702":[77,88]}
def update(id):
yw=input("该学生语文成绩是:")
sx=input("该学生数学成绩是:")
db[id]=[yw,sx]
def idvalid():
while 1:
id=input("请输入需要操作的学号:")
if id in db:
return id
if id=="":
return #误操作
print("输入有误,该学号不存在!")
def add():
while 1:
id=input("请输入需要增加的学号:")
if id not in db:
break
print("输入有误,该学号已存在!")
if id=="":
return
update(id)
def delete():
id=idvalid()
if id:
del db[id]
def change():
id=idvalid()
if id:
update(id)
def query():
id=input("请输入需要查询的学号:")
if id in db:
print("语文成绩:",db[id][0])
print("数学成绩:",db[id][1])
else:
print("查无此人!")
print("欢迎使用")
while 1:
print("菜单:")
print("1 增 2 删 3 改 4 查 5 退出")
op=input("你的操作是:")
if op=="1":
add()
elif op=="2":
delete()
elif op=="3":
change()
elif op=="4":
query()
else:
exit()
11. 练习二:网络数据采集 获取火车站信息
使用requests模块来获取12306上的火车站的信息,并提供查询
#获取火车站信息
import requests
url="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9108"
inf=requests.get(url).text
rlist=inf[:-2].split("@")[1:]
#print(rlist[:10],rlist[-10:])
result={}
for i in rlist:
ilist=i.split("|")
code=ilist[2]
cn=ilist[1]
jp=ilist[0]
qp=ilist[3]
result[code]=[cn,jp,qp]
#测试查询
while 1:
station=input("请输入要查询的车站:")
if station=="":
break
for k,v in result.items():
if station in v:
print(k,v)