• Python 基础数据类型 III (字典)


    1今日内容

    • 字典的初识
    • 字典的使用(增删改查)
    • 字典的嵌套

    2内容回顾

    • 列表:容器型数据类型,可以承载大量的数据,有序的数据
      • 增:
        • append 追加
        • insert 插入
        • extend 迭代着追加
        • pop 按照索引删除,有返回值,默认删除第一个
        • remove 按照元素删除
        • clear 清空
        • del 按照索引 ,切片(步长)
        • lis[0] = ‘’
        • lis[:2] = ''
        • lis[1:5:2] =''
        • 索引,切片
        • for
    • 元祖:只读列表,() 拆包
    • range:可以看做控制范围的数字列表,但是它不是列表

    3具体内容

    • 字典的初识

      • why

        • 列表可以存储大量的数据,数据之间的关联性不强
        • 列表的查询速度慢
      • what

        • 容器型数据类型:dict
      • how

        • 数据类型的分类(可变与不可变)

          • 可变(不可哈希)的数据类型 :list dict set
          • 不可变(可哈希)的数据类型 :str int bool tuple
        • 字典:{}括起来,以键值对形式存储的容器型数据类型:

          dic = {'太白':
              {'name':'金星','age':18,'sex':'男'}
          '书籍':
               ['游戏改变世界','肠子的小小心思','娱乐至死','权力']
          }
          
        • 键必须是不可变的数据类型 : int str (bool,tuple)

        • 优点:查询速度非常快,存储关联性的数据

        • 缺点:以空间换时间

    • 字典的创建方式

      #方式一
      dic = dict((('one',1),('two',2),('three',3)))
      print(dic)#{'one':1,'two':2,'three':3}
      
      #方式二
      dic = dict(one=1,two=2,three=3)
      print(dic)
      
      #方式三
      dic = dict({'one':1,'two':2,'three':3})
      print(dic)
      
    • 验证字典的合法性:

      dic = {[1,2,3]:'alex',1:666}  #键要不可变的数据类型
      print(dic)
      
      dic = {1:'alex',1:'太白',2:'金星'}
      print(dic)
      
    • 字典的增删改查

      dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学']}
      
      #增  2
      #dic[]  直接增加,无则增加,有则改之
      dic['age'] = 25   #改
      print(dic)
      dic['sex'] = '男'  #加
      print(dic)
      #setdefault  有则不变,无则加之
      dic.setdefauit('sex')  #dic = {'name':'太白','age':18,'books':['稀缺','穷爸爸富爸爸','为什么学生不喜欢上学'],'sex':None}
      dic.setdefault('sex','男')
      dic.setdefault('age',25)
      
      #删 3
      #pop 
      #  按照键删除键值对,有返回值;
      #  设置一个没有的元素,报错
      #  设置两个元素,即使字典中没有改键也不报错
      dic.pop('name')
      ret = dic.pop('name')
      dic.pop('sex')
      dic.pop('sex':'没有此键')
      print(dic)
      #clear 清空列表
      dic.clear()
      print(dic)
      #del  按照元素删除,字典中没有键会报错
      del dic['name']
      print(del)
      del dic['sex']
      print(del)
      
      #改 
      dic['name'] = '金星'
      
      #查 2
      print(dic['name'])
      print(dic['name1'])
      #get
      li = dic.get('name')
      print(li)
      li = dic.get('name1')
      li = dic.get('name1','没有此键') #可以设置返回值
      print(li)
      
      #三个特殊
      #keys()  values()  items()
      #keys()
      print(dic.keys())
      #转化成列表
      print(list(dic.keys()))
      for key in dic.keys():
          print(key)
      for key in dic:
          print(key)
          
      #values()
      print(dic.values())
      #转化列表
      print(list(dic.values()))
      for value in dic.values():
          print(value)
          
      #items()
      print(dic.items())
      for key value in dic.items():
          print(key,value)
      a,b = (12,13)
      print(a,b)
      a = 12
      b = 13
      a,b = b,a
      print(a,b)#13 12
      

      练习

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

      dic = {
          'name': '汪峰',
          'age': 48,
          'wife': [{'name': '国际章', 'age': 38},],
          'children': {'girl_first': '小苹果','girl_second': '小怡','girl_three': '顶顶'}
      }
      
      # 1. 获取汪峰的名字。
      dic['name']
      dic.get('name')
      # 2.获取这个字典:{'name':'国际章','age':38}。
      dic['wife'][0]
      # 3. 获取汪峰妻子的名字。
      dic['wife'][0]['name']
      # 4. 获取汪峰的第三个孩子名字。
      dic['childen']['girl_three']
      

    4总结

    • 字典:查询速度快,数据关联性强
      • 键为不可变数据类型, (str,int,bool,tuple) 唯一
      • 值为任意数据类型,对象
      • 增删改查,三个特殊
      • 字典的嵌套
  • 相关阅读:
    Swift网络库Alamofire的导入
    iOS书摘之Objective-C编程之道 iOS设计模式解析
    Crash日志分析
    自动布局库--Masonry使用
    Xcode Ghost
    Xcode8-beat升级需谨慎
    UIView剖析之Draw、Size、Layout方法
    Xcode警告忽略
    属性(property)与成员变量(ivar)
    sql server分页存储过程
  • 原文地址:https://www.cnblogs.com/xiaohei-chen/p/11870081.html
Copyright © 2020-2023  润新知