Python_Day07

day07
字典:
    1.字典是可以改变的容器,可以存储任意类型的数据
    2.字典是使用键-值对进行存储.
    3.字典是没有先后顺序,存储是没有顺序的
    4.字典使用键值映射关系进行存储.
    5.字典中的键是不能重复,
        使用不可变的数据作为字典的键
字典使用的是{}括起来的,:把键和值进行分隔,
键值对之间使用,隔开.
"class" : 班级,类
字典的创建:
    d ={}#空的字典
    d ={"name":"名字","age":"年龄",....}
不可变的数据类型:
int float 字符串"" 元组()
字典的构造函数:dict()
    dict():空字典
    dict(可迭代对象):使用可迭代对象创造字典
    dict(**kargs):使用关键字传参形式创造字典
        >>> d = dict()
        >>> d
        {}
        >>> type(d)
        <class 'dict'>
        >>> dict([ (1,2),(1,"abc") ,["abc",1] ,["1",100] ])
        {1: 'abc', 'abc': 1, '1': 100}
        >>> d = dict([ (1,2),(1,"abc") ,["abc",1] ,["1",100] ])
        >>> type(d)
        <class 'dict'>
        >>> d = dict([ (1,2),(2,"abc") ,["abc",1] ,["1",100] ])
        >>> d
        {1: 2, 2: 'abc', 'abc': 1, '1': 100}
        >>> d = dict(name = "zhuzhu")
        >>> d
        {'name': 'zhuzhu'}
字典的操作:
    语法: v = d[键]
添加/修改数据:
    添加:健在字典中不存在,就是添加数据到字典中
    修改:键在字典中存在,就是修改字典中的内容.
删除数据:
    del 字典[键]
    >>> d
    {'class1': 9, 'yuwen': 100, 'age': 18}
    >>> del d["age"]
    >>> d
    {'class1': 9, 'yuwen': 100}
字典中in not in运算符:
    in 判断键是否在字典中,在,返回值是True,否则就是False
    not in 的返回值和in的返回值相反
练习:
    1.将如下数据形成一个字典:
    键      值
    1      "春天 1,2,3月"
    2      "夏天 4,5,6月"
    3      "秋天 7,8,9月"
    4      "冬天 10,11,12月"
    2.当输入数据1,显示 "春天 1,2,3月"?
    如果用户输入的数据不存在,显示"信息不存在"

字典迭代访问:
    字典是可迭代对象,每次只能对键进行访问.

字典的函数:
    len():返回字典中键值对的个数
    max():返回的是字典中键的最大值
    min():返回的是字典中键的最小值
    sum():求键的和
    all():求键的真值,都为真返回值为真,否则为假
    any():对键进行测试,有一个为真返回值为真
字典中方法:
    方法名        作用
    D.clear():   清空
    D.pop(key): 移除,返回值是键对应的数据值
    D.copy():拷贝,返回的是D的一个副本(浅拷贝)
    D.update(D2)将字典D2 合并到D中,如果键相同,
        使用D2中的新数据.
    D.get(key,default = None):
        返回key对应的值,如果键key不存在,
        返回的是default的值.
    D.items() 返回可迭代的dict_item对象
    D.keys()返回可迭代的dict_key对象
    D.values()返回可迭代的dict_value对象
练习:
    1.输入任意的字符串,打印字符串中的字符
        和字符出现的次数?
    请输入数据:ABACBDDABCD
    A:3次
    B:3次
    C:2次
    D:3次
字典推导式:
    使用可迭代对象生成字典的表达式
    语法规则:
    { 键表达式:值表达式 
       for 变量 in 可迭代对象 if 真值表达式1}
     #键1-9的数据,值是键的平方?
     {1:1, 2:4 ,3:9 ,....}
     {x : x**2 for x in range(1,10)}
练习:
    1.已知有如下的列表,
    L= ["tarena","xiaozhang","lisi"]
    生成字典如下:
    d = {"tarena":6,"xiaozhang":9,"lisi":4}
练习:
已知有两个列表:
L = [1001,1002,1003]
L1 = ["zhagsan","lisi","wangwu"]
生成如下字典:
D= {1001:"zhangsan",1002:"lisi",1003:"wangwu"}
集合:
    1.集合是一个可变的容器
    2.集合中的数据是唯一(不能多次出现)
    3.集合无序的存储结构,集合中的数据没有先后关系
    4.集合中的元素都是不可变的
    5.集合是可迭代对象
    6.集合是一个只有键没有值的字典.
空集合:
    set()#空集合
非空集合:
    s = { 1,"abcd" ,(1,2,3)}
集合的构造函数:
    set()
    set(可迭代对象):可以使用可迭代对象创建新集合
    >>> L=[1,2,3,"abcd",(1,2,3)]
    >>> set(L)
    {1, 2, 3, 'abcd', (1, 2, 3)}
集合的运算:
    并集|  交集& 补集- 对称子集^  子集<  超集>
    并集|:集合1 | 集合2 
      最终生成的集合,既包含集合1 也包含集合2
    交集&:最终生成的集合是集合1 和集合2 公共元素
    补集-: S1-S2:包含S1但是不包含S2
    对称子集^:
    S1 < S2 :S1是S2子集
    S2 > S1 : S2是S1的超集

    == != 集合相等/不等
    S1={1,2,3}
    S2 = {1,2,3,4}
    S1 == S2  -->False
    S1 != S2 --->True
in和not in
    使用规则和集合,字符串,元组,列表一样,
    在集合中,in-->True
         not in-->False
集合中:
    len():求集合的长度
    max():最大值
    min():最小值
    sum():求和
    all():使用规则和列表一样
    any():使用规则和列表一样
练习:
    S1 经理有:曹操,刘备,孙权 
    S2 技术员:曹操,孙权,张飞 关羽
        1.即是经理也是技术员的? S1 & S2
        2.是经理但是不是技术员? S1-S2
        3.是技术员但是不是经理? S2-S1
        4.张飞是经理? "张飞" in S1
        5.身兼一职的都有谁? S1 ^ S2
        6.经理和技术员总共多少人? len(S1|S2)

作业:
1.写一个程序,模拟一下电子词典:
    1)输入单词和解释,单词作为键,解释作为值,
    将数据存放在字典中,当输入空格,输入结果
    2)输入要查找的词,给出的是单词的解释,
    如果单词不存在,提示"该单词不存在"
2.学生管理项目:
    输入学生的姓名,年龄,成绩,每个学生的信息存
    在字典中,(学员信息需要手动输入)
    [{"name":A,"age":20,"score":100},
    {"name":"zhangsan","age":22,"score":100}]
    1)打印出存学员信息的列表:
    2)按照如下格式打印:
    +--------+------+-------+
    |  name  |  age | score |
    +--------+------+-------+
    |   A    |   20 |  100  |
    |zhangsan|   22 |  200  |
    +--------+------+-------+

 

 

 


    

 

 

 


    
    


    

 

 

    
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值