python入门之字典和集合

1.   字典的定义

  字典是另一种可变容器模型,且可存储任意类型对象。

  字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中

 

  键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一

  值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组

  python入门之字典和集合_第1张图片

  字典不能切片,不能排序,可以根据键key来索引,也可以使用get方法,取出某个key对应的value。直接取如果不存在会报错,如果用get方法会返回空,也可以指定默认返回值。

2.   字典的增删改查操作

  可以单个增加也可以批量增加,s6=66这种方式会默认为字符串形式

  python入门之字典和集合_第2张图片

  Del删除指定的key键值对没有返回值,pop删除指定的键值对有返回值,popitem弹出并删除一个(最后一个)的键值对,一般来说随机,会返回键值对,不用指定,当空时会报错

  python入门之字典和集合_第3张图片

  清空字典 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)

  python入门之字典和集合_第4张图片

  字典操作速度快,费内存;列表操作速度慢,省内存

4.   字典内置函数和方法

  内置函数

  python入门之字典和集合_第5张图片

  内置方法

  python入门之字典和集合_第6张图片

5.   集合的定义

  集合(set)是一个无序的不重复元素序列

  可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

 

6.   集合的常用操作

  列表去重

 

  身份关系运算

  python入门之字典和集合_第7张图片

  基本操作

  python入门之字典和集合_第8张图片

  pop不指定值,随机删除  然而在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)

  python入门之字典和集合_第9张图片

  删除不存在的对象,remove会报错discard不会

  python入门之字典和集合_第10张图片

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))

  python入门之字典和集合_第11张图片

8.   集合的内置函数

  python入门之字典和集合_第12张图片

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()

  python入门之字典和集合_第13张图片

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)

  python入门之字典和集合_第14张图片

你可能感兴趣的:(python,3入门)