python基础教程:字典详细使用

àì夳堔傛蜴生んèń 2022-10-11 12:23 341阅读 0赞

字典

字典是无序、可变序列。

定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“{}”中。

字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。

  • globals()返回包含当前作用域内所有全局变量和值的字典。
  • locals()返回包含当前作用域内所有局部变量和值的字典。

1 字典创建与删除

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

  1. >>> a_dict = { 'server': 'localhost', 'database': 'mysql'}
  2. >>> a_dict
  3. { 'database': 'mysql', 'server': 'localhost'}
  4. >>> x = { } #空字典
  5. >>> x
  6. { }

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

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

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

  1. >>> d = dict(name='xiao', age=17)
  2. >>> d
  3. { 'age': 17, 'name': 'xiao'}

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

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

可以使用del删除整个字典

2 字典元素的读取

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

  1. ''' Python学习交流,免费公开课,免费资料, 免费答疑,系统学习加QQ群:531509025 '''
  2. >>> aDict = { 'name':'xiao', 'sex':'male', 'age':17}
  3. >>> aDict['name']
  4. 'xiao'
  5. >>> aDict['tel']      #键不存在,抛出异常
  6. Traceback (most recent call last):
  7. File "<pyshell#53>", line 1, in <module>
  8. aDict['tel']
  9. KeyError: 'tel'

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

  1. >>> print(aDict.get('address'))
  2. None
  3. >>> print(aDict.get('address', 'chengdu'))
  4. chengdu
  5. >>> aDict['score'] = aDict.get('score',[])
  6. >>> aDict['score'].append(98)
  7. >>> aDict['score'].append(97)
  8. >>> aDict
  9. { 'age': 37, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}

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

  1. >>> aDict={ 'name':'xiao', 'sex':'male', 'age':17}
  2. >>> for item in aDict.items():
  3. print(item)
  4.   
  5. ('name', 'xiao')
  6. ('sex', 'male')
  7. ('age', 17)
  8. >>> for key in aDict:      #不加特殊说明,默认输出键
  9. print(key)
  10.   
  11. age
  12. name
  13. sex
  14. >>> for key, value in aDict.items():      #序列解包用法
  15. print(key, value)
  16. age 17
  17. name xiao
  18. sex male
  19. >>> aDict.keys()      #返回所有键
  20. dict_keys(['name', 'sex', 'age'])
  21. >>> aDict.values()      #返回所有值
  22. dict_values(['xiao', 'male', 17])

3 字典元素的添加与修改

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

  1. ''' Python学习交流,免费公开课,免费资料, 免费答疑,系统学习加QQ群:531509025 '''
  2. >>> aDict['age'] = 18   #修改元素值
  3. >>> aDict
  4. { 'age': 18, 'name': 'xiao', 'sex': 'male'}
  5. >>> aDict['address'] = 'sichuan'      #增加新元素
  6. >>> aDict
  7. { 'age': 18, 'address': 'sichuan', 'name': 'xiao', 'sex': 'male'}

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

  1. >>> aDict
  2. { 'age': 17, 'score': [98, 97], 'name': 'xiao', 'sex': 'male'}
  3. >>> aDict.items()
  4. dict_items([('age', 17), ('score', [98, 97]), ('name', 'xiao'), ('sex', 'male')])
  5. >>> aDict.update({ 'a':'a','b':'b'})
  6. >>> aDict
  7. { 'a': 'a', 'score': [98, 97], 'name': 'xiao', 'age': 17, 'b': 'b', 'sex': 'male'}

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

4 字典应用案例

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

  1. ''' Python学习交流,免费公开课,免费资料, 免费答疑,系统学习加QQ群:531509025 '''
  2. >>> import string
  3. >>> import random
  4. >>> x = string.ascii_letters + string.digits + string.punctuation
  5. >>> y = [random.choice(x) for i in range(1000)]
  6. >>> z = ''.join(y)
  7. >>> d = dict()
  8. >>> for ch in z: #使用字典保存每个字符出现次数
  9. d[ch] = d.get(ch, 0) + 1
  10. >>> print(d)

5 字典推导式

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

发表评论

表情:
评论列表 (有 0 条评论,341人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python教程——字典

    什么是字典 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括

    相关 Python基础教程:元组详细使用

    元组 元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素。 元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“()”中,而不是方括号中。