老王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

猜你喜欢

转载自blog.csdn.net/lcl_xiaowugui/article/details/80765007