zoukankan      html  css  js  c++  java
  • PythonDay05

    第五章

    今日内容

    • 字典

    字典

    语法:{'key1':1,'key2':2}

    注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

    列表可以存储大量的数据类型,但是只能按照顺序存储,数据与数据之间关联性不强。为了解决这一问题,就需要用字典。字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成

    在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中.

    这种算法被称为hash算法,key必须是可hash的

    已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set

    注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

    注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

    dict = {1:1,2:2,3:'3',4:'5'}
    print(dict[1]) # 1
    print(dict[4]) # '5'

    注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

    1.字典的增

    dic = {}

    dic['name'] = '徐'
    dic['age'] = 19
    print(dic) # {'name': '徐', 'age': 19}

    # 如果dict中没有出现这个key,就会将key-value组合添加到这个字典中
    # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值

    dic.setdefault('雨隹',1)
    print(dic) # {'雨隹': 1}  
    # 我们使用setdefault这个方法 里边放的这个内容是我们字典的健,后面写默认值,可不写,默认为None

    dic.setdefault('雨隹',123)    
    # 这样就是不会进行添加操作了,因为dic这个字典中已经存在
    # 总结: 当setdefault中第一个参数存在这个字典中就就不进行添加操作,否则就添加

    2.字典的删

    dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
    s = dic.pop('剑圣') # pop删除有返回值,返回的是被删的值
    print(dic)   # 打印删除后的字典

    dic.popitem() # 随机删除 python3.6是删除最后一个
    print(dic)

    dic.clear() # 清空

    3.字典的改

    dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
    dic['大宝剑'] = '德玛西亚'
    print(dic)

    dic.update({'key':'v','哈啥给':'剑姬'})
    # 当update中的字典里没有dic中键值对就添加到dic字典中,如果有就修改里边的对应的值,必须是字典

    4.字典的查

    dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
    s = dic['大宝剑']       #通过健来查看,如果这个健不在这个字典中.就会报错

    s1 = dic.get('剑圣')     #通过健来查看,如果这个健不在这个字典中.就会返回None

    s2 = dic.get('剑姬','可定义返回的结果') # 我们可以在get查找的时候自己定义返回的结果

    5.字典的其他操作

        keys()              获取所有的键
      values() 获取所有的值
      items() 获取所有的键值
      for循环 --   循环的是字典的键
    for k,v in dic.items():
      print('这是键',k)
      print('这是值',v)
    #   循环字典获取键和值

    练习

    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    请在k3对应的值中追加一个元素 44,输出修改后的字典
    请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典

    6.结构

    a,b = 1,2
    print(a,b)						#   1 2
    
    a,b = ('你好','世界')
    print(a,b)						# 你好,世界
    
    a,b = {'汪峰':'北京北京','王菲':'天后'}
    print(a,b)
    结果:
    汪峰 王菲
    

    解构可以将内容分别赋值到变量当中,我们使用解构就能够快速的将值使用

    7.字典的嵌套

    dic = {
        101:{1:{"日魔":"对象"},
             2:{"隔壁老王":"王炸"},
             3:{"乔碧萝":("日魔","炮手","宝元")},
             },
        102:{1:{"汪峰":{"国际章":["小苹果","大鸭梨"]}},
             2:{"邓紫棋":["泡沫","信仰","天堂","光年之外"]},
             3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]}
             },
        103:{1:{"蔡徐坤":{"唱":["鸡你太美"],
                       "跳":["钢管舞"],
                       "rap":["大碗面"],
                       "篮球":("NBA形象大使")}},
    
             2:{"JJ":{"行走的CD":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}},
             3:{"Jay":{"周董":["菊花台","双节棍","霍元甲"]}}},
    
        201:{
            1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}}
        }
    }
    print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"])
    # print(dic[103][1]["蔡徐坤"]["跳"][0][1])
    # print(dic[102][2]["邓紫棋"][1])
    

    练习

    dic1 = {
     'name':['alex',2,3,5],
     'job':'teacher',
     'oldboy':{'alex':['python1','python2',100]}
     }
    1,将name对应的列表追加⼀个元素’wusir’。
    2,将name对应的列表中的alex⾸字⺟⼤写。
    3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
    4,将oldboy对应的字典中的alex对应的列表中的python2删除
    
  • 相关阅读:
    FZU 2272 Frog 第八届福建省赛 (鸡兔同笼水题)
    HDU 1166 敌兵布阵(线段树点更新区间求和裸题)
    poj 2251 Dungeon Master (BFS 三维)
    16 多校 8 Ball (贪心排序)很巧妙的思路啊~
    16 多校8 Rikka with Parenthesis II
    紫书动规 例题9-7 UVA
    紫书动规 例题9-6 UVA
    紫书动规 例题9-5 UVA
    紫书动规 例题9-4 UVA
    紫书动规 例题9-3 UVA
  • 原文地址:https://www.cnblogs.com/xuyuwei/p/11317251.html
Copyright © 2011-2022 走看看