老王python之基本数据结构——字典

老王python之基本数据结构——字典

字典是无序的,不能通过偏移来进行存取,只能通过键来进行存取

一、字典

  • 字典的格式是字典 = {'key':value},key代表键,value代表key对应的值
  • 特点
    • 字典是无序的
    • 通过键来读取内容
    • 可以进行嵌套,方便我们组织多种数据结构
    • 字典是可变类型,可以在原地修改内容
    • 组成字典的键必须是不可变的数据类型。比如:数字、字符串、元组等,而且比如说以元组作为key,那么元组里面的内容也必须是不可变对象,否则也会报错,而可变对象列表等不能作为键

二、字典的操作

  • 1、创建字典

    • 1、1 :{}方法
      >>> ainfo = {'a':11,'b':22}
      >>> ainfo
      {'a': 11, 'b': 22}
    • 1.2 : dict()方法
      >>> binfo = dict(name='lilei',age=20)   
      >>> binfo
      {'age': 20, 'name': 'lilei'}

  • 2、添加内容

    格式为dict['key'] = 'value'

    >>> binfo['phone'] = 'iphone'
    >>> binfo
    {'phone': 'iphone', 'age': 20, 'name': 'lilei'}

  • 3、修改内容

    • 3.1:对已经存在的key进行添加,相当于修改该key对应的value
      >>> binfo
      {'phone': 'iphone', 'age': 20, 'name': 'lilei'}
      >>> binfo['phone'] = 'vivo'
      >>> binfo
      {'phone': 'vivo', 'age': 20, 'name': 'lilei'}
    • 3.2:update方法会覆盖相同key的值
      >>> binfo
      {'phone': 'vivo', 'age': 20, 'name': 'lilei'}
      >>> binfo.update({'city':'xi\'an','phone':'nokia'})
      >>> binfo
      {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"}

  • 4、删除操作

    • 4.1:del()方法

      格式为del dict['key']del dict,前者表示删除字典中的某个元素,后者表示直接删除了某个字典

      >>> ainfo = {'a':123,'sex':'girl'}
      >>> ainfo
      {'a': 123, 'sex': 'girl'}
      >>> del ainfo['a']  #删除其中一个元素 
      >>> ainfo 
      {'sex': 'girl'}
      >>> del ainfo     ##删除该字典
      >>> ainfo
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      NameError: name 'ainfo' is not defined
    • 4.2 : clear()方法

      clear方法表示清空字典里面的所有元素

      >>> ainfo = {'a':123,'sex':'girl'}
      >>> ainfo.clear()
      >>> ainfo
      {}
    • 4.3 : pop()方法

      通过和列表的pop方法进行比较,并且找到它们的相同点和不同点

      • 字典的pop方法,格式为dict.pop('key'),它传入的参数是key值,并且会将这个key值对应的value值返回到界面上,然后从字典中删除
        如果传入的参数key不存在,那么也会抛出一个异常,但它可以自己设置传入这个不存在的参数时,返回的内容

        >>> ainfo = {1:'aa','b':'dd'}
        >>> ainfo.pop('b')
        'dd'
        >>> ainfo
        {1: 'aa'}
        >>> ainfo.pop(404)
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        KeyError: 404
        >>> ainfo.pop(404,'Not found')
        'Not found'
      • 列表的pop方法,格式为list.pop(index),它传入的参数是索引下标,会将这个索引下标对应的值返回到界面上,并从列表中删除
        如果传入的参数index是不存在的,那么会抛出异常,提示下标溢出

        >>> cinfo = [11,22]
        >>> cinfo.append(66)
        >>> cinfo
        [11, 22, 66]
        >>> cinfo.pop(0)
        11
        >>> cinfo
        [22, 66]
        >>> cinfo.pop(4)
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        IndexError: pop index out of range

  • 5、判断成员关系

    • 5.1: in方法
      >>> a = {'aa':22,'a':22}
      >>> 'a' in a
      True
      >>> 'b' in a
      False
    • 5.2: has_key(‘key’)方法
      >>> a.has_key('aa')   #和上面用的是同一个字典a
      True
      >>> a.has_key('aabb')
      False

  • 6、字典的几个常用方法

    • 6.1、keys()

      它返回的是一个列表,里面包含了字典的所有键

      >>> binfo
      {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"}
      >>> binfo.keys()
      ['phone', 'age', 'name', 'city']
    • 6.2、valus()

      它返回的是一个列表,里面包含了字典的所有值

      >>> binfo
      {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"}
      >>> binfo.values()
      ['nokia', 20, 'lilei', "xi'an"]
    • 6.3、items()

      它返回的也是一个列表,不过列表中的每一个元素都是一个元组,每个元组对应字典中的key和它对应的value

      >>> binfo
      {'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': "xi'an"}
      >>> binfo.items()
      [('phone', 'nokia'), ('age', 20), ('name', 'lilei'), ('city', "xi'an")]

    • #### 6.4、get()
      格式为dict.get('key'),如果传入的参数key是存在的,那么得到的返回值时这个key所对应的value,如果传入的参数key不存在的,表面上得到的是一个空值,但其实返回的是一个Nonetype类型的值
      get方法和pop方法类似,如果想要确保某个不存在的key返回一个值的话,可以自己定义这个返回值
      >>> ainfo
      {1: 'aa'}
      >>> ainfo.get(1)
      'aa'
      >>> b = ainfo.get('haha')
      >>> type(b)
      <type 'NoneType'>
      >>> ainfo.get('haha',22)
      22
一、Python基础概述 二、Python基础教程 老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 基础篇5-python基本数据类型讲解1.1 基础篇6-福利课-python基本数据类型讲解1.2 基础篇7-python基本数据类型讲解1.3 基础篇8-python基本数据类型习题解答 基础篇9-python基本数据结构-列表 基础篇10-python基本数据结构-列表应用 基础篇11-python基本数据结构-元组和集合 基础篇12-python基本数据结构-字典 基础篇13-python基本数据结构习题解答 基础篇14-答疑课-python里面这些难缠的符号们 基础篇15-答疑课-再议数据结构与数据类型 基础篇16-python语句1.1 基础篇17-python语句1.2 基础篇18-基础篇综合习题 基础篇19-python语句与数据结构应用 基础篇20-python函数 基础篇21-文本操作应用 基础篇22-文本操作应用解答 老王Python教程 进阶篇 进阶篇1-进阶篇承上启下 进阶篇2-函数第一节 进阶篇3-函数第二节 进阶篇4-函数第三节 进阶篇5-函数第四节 进阶篇6-函数周末习题 进阶篇7-面向对象第一节 进阶篇8-面向对象第二节 进阶篇9-函数周末习题讲解1.1 进阶篇10-周末习题讲解1.2 进阶篇11-面向对象第三节 进阶篇12-面向对象周末习题讲解 进阶篇13-模块第一节 进阶篇14-模块第二节-常用模块讲解 进阶篇15-异常处理1.1 进阶篇16-异常处理1.2 进阶篇17-异常处理1.3 进阶篇18-周末异常习题探讨 进阶篇19-多线程1.1 进阶篇20-多线程1.2 进阶篇21-多线程1.3 进阶篇22-习题讲解复习 进阶篇23-用协程解决相关问题 进阶篇24-正则表达式1.1 进阶篇25-正则表达式1.2 进阶篇26-socket1.1 进阶篇27-高性能的多线程网络资源访问 进阶篇28-高性能的多线程网络资源访问第二节 进阶篇29-http相关讲解 进阶篇30-wsgi讲解 进阶篇31-进阶综合习题应用 进阶篇32-综合习题讲解 进阶篇33-进阶项目讲解第二节 进阶篇34-项目讲解第三节 老王Python教程 项目篇 项目篇1-django博客第一节 项目篇2-django博客第二节 项目篇3-django web编程扫盲之二 项目篇4-django数据库操作第一节 项目篇5-django数据库操作第二节 项目篇6-django速攻之数据提交,显示 项目篇7-django速攻之衔接 项目篇8-tornado第一节扫盲篇 项目篇9-tornado第二节 项目篇10-tornado第三节 项目篇11-tornado项目第四节 项目篇12-tornado项目篇第五节 项目篇13-tornado第六节 项目篇14-整站爬虫 项目篇15-聊天室
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值