• python 字典详细使用


    1. 字典

    • 字典是无序、可变序列。
    • 定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“{}”中。
    • 字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。
    • globals()返回包含当前作用域内所有全局变量和值的字典。
    • locals()返回包含当前作用域内所有局部变量和值的字典。

    1.1 字典创建与删除

    • 使用=将一个字典赋值给一个变量:

      >>> a_dict = {'server': 'localhost', 'database': 'mysql'}
      >>> a_dict
      {'database': 'mysql', 'server': 'localhost'}
      >>> x = {}       #空字典
      >>> x
      {}

    • 使用dict利用已有数据创建字典:

      >>> keys = ['a', 'b', 'c', 'd']
      >>> values = [1, 2, 3, 4]
      >>> dictionary = dict(zip(keys, values))
      >>> dictionary
      {'a': 1, 'c': 3, 'b': 2, 'd': 4}
      >>> x = dict()    #空字典
      >>> x
      {}

    • 使用dict根据给定的键、值创建字典

      >>> d = dict(name='xiao', age=17)
      >>> d
      {'age': 17, 'name': 'xiao'}

    • 以给定内容为键,创建值为空的字典

      >>> adict = dict.fromkeys(['name', 'age', 'sex'])
      >>> adict
      {'age': None, 'name': None, 'sex': None}

    • 可以使用del删除整个字典

    1.2 字典元素的读取

    • 以键作为下标可以读取字典元素,若键不存在则抛出异常

      >>> aDict = {'name':'xiao', 'sex':'male', 'age':17}
      >>> aDict['name']
      'xiao'
      >>> aDict['tel']      #键不存在,抛出异常
      Traceback (most recent call last):
      File "<pyshell#53>", line 1, in <module>
      aDict['tel']
      KeyError: 'tel'

    • 使用字典对象的get方法获取指定键对应的值,并且可以在键不存在的时候返回指定值。

      >>> print(aDict.get('address'))
      None
      >>> print(aDict.get('address', 'chengdu'))
      chengdu
      >>> aDict['score'] = aDict.get('score',[])
      >>> aDict['score'].append(98)
      >>> aDict['score'].append(97)
      >>> aDict
      {'age': 37, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}

    • 使用字典对象的items()方法可以返回字典的键、值对
    • 使用字典对象的keys()方法可以返回字典的键
    • 使用字典对象的values()方法可以返回字典的值

      >>> aDict={'name':'xiao', 'sex':'male', 'age':17}
      >>> for item in aDict.items():
          print(item)

      
      ('name', 'xiao')
      ('sex', 'male')
      ('age', 17)
      >>> for key in aDict:      #不加特殊说明,默认输出键
          print(key)

      
      age
      name
      sex
      >>> for key, value in aDict.items():      #序列解包用法
          print(key, value)


      age 17
      name xiao
      sex male
      >>> aDict.keys()      #返回所有键
      dict_keys(['name', 'sex', 'age'])
      >>> aDict.values()      #返回所有值
      dict_values(['xiao', 'male', 17])

    1.3 字典元素的添加与修改

    • 当以指定键为下标为字典赋值时:1)若键存在,则可以修改该键的值;2)若不存在,则表示添加一个键、值对。

      >>> aDict['age'] = 18   #修改元素值
      >>> aDict
      {'age': 18, 'name': 'xiao', 'sex': 'male'}
      >>> aDict['address'] = 'sichuan'      #增加新元素
      >>> aDict
      {'age': 18, 'address': 'sichuan', 'name': 'xiao', 'sex': 'male'}

    • 使用字典对象的update()方法将另一个字典的键、值对添加到当前字典对象。

      >>> aDict
      {'age': 17, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}
      >>> aDict.items()
      dict_items([('age', 17), ('score', [98, 97]), ('name', 'xiao'), ('sex', 'male')])
      >>> aDict.update({'a':'a','b':'b'})
      >>> aDict
      {'a': 'a', 'score': [98, 97], 'name': 'xiao', 'age': 17, 'b': 'b', 'sex': 'male'}

    • 使用del删除字典中指定键的元素
    • 使用字典对象的clear()方法来删除字典中所有元素
    • 使用字典对象的pop()方法删除并返回指定键的元素
    • 使用字典对象的popitem()方法删除并返回字典中的一个元素

    1.4 字典应用案例

    • 首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。

      >>> import string
      >>> import random
      >>> x = string.ascii_letters + string.digits + string.punctuation
      >>> y = [random.choice(x) for i in range(1000)]
      >>> z = ''.join(y)
      >>> d = dict()
      >>> for ch in z: #使用字典保存每个字符出现次数
          d[ch] = d.get(ch, 0) + 1


      >>> print(d)

    1.5 字典推导式

        >>> {i:str(i) for i in range(1, 5)}
      {1: '1', 2: '2', 3: '3', 4: '4'}
      >>> x = ['A', 'B', 'C', 'D']
      >>> y = ['a', 'b', 'b', 'd']
      >>> {i:j for i,j in zip(x,y)}
      {'A': 'a', 'C': 'b', 'B': 'b', 'D': 'd'}
      >>> s = {x:x.strip() for x in (' he ', 'she ', ' I')}
      >>> s
      {' he ': 'he', ' I': 'I', 'she ': 'she'}

  • 相关阅读:
    Java安全之JNDI注入
    Visual Studio 2019 升级16.8之后(升级.Net 5),RazorTagHelper任务意外失败
    .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.
    重走py 之路 ——普通操作与函数(三)
    重走py 之路 ——字典和集合(二)
    设计模式结(完结篇)
    重走py 之路 ——列表(一)
    RestfulApi 学习笔记——分页和排序(五)
    RestfulApi 学习笔记——查询与过滤还有搜索(五)
    Android开发 Error:The number of method references in a .dex file cannot exceed 64K.Android开发 Error:The number of method references in a .dex file cannot exceed 64K
  • 原文地址:https://www.cnblogs.com/xiaoyh/p/9980311.html
Copyright © 2020-2023  润新知