• 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'}

  • 相关阅读:
    convert.c:7:3: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by
    80 多个 Linux 系统管理员必备的监控工具
    控件风格19种,必须倒背如流——其实就是控件所拥有的能力,即有条件使用VCL框架所提供的(功能)代码
    控件状态11种,必须倒背如流——记录控件当前的状态,防止误判(一般使用完以后就把状态改回去)
    FindChildControl与FindComponent
    保存网页为图片——滚动截取IE(WebBrowse)
    HDOJ 1755
    IP编辑控件(因为封装的是系统自带控件,所以也使用了CreateSubClass,不过为啥要封装CN_COMMAND和CN_NOTIFY不是很明白)
    QT之深入理解QThread
    Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换
  • 原文地址:https://www.cnblogs.com/xiaoyh/p/9980311.html
Copyright © 2020-2023  润新知