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

python 字典详细使用的更多相关文章

  1. python字典详细介绍

    字典的用途   字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据. 字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key:另一组数据可通过 key 来访问,被称为 ...

  2. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  3. Python字典和集合的内部实现

    1. 哈希表(Hash tables) 在Python中,字典是通过哈希表实现的.也就是说,字典是一个数组,而数组的索引是经过哈希函数处理后得到的.哈希函数的目的是使键均匀地分布在数组中.由于不同的键 ...

  4. 'dict_values' object does not support indexing, Python字典dict中由value查key

    Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...

  5. 转载 - Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)

    出处:http://www.cnblogs.com/ifantastic/p/3185665.html Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LT ...

  6. Python字典实现

    这篇文章描述了在Python中字典是如何实现的. 字典通过键(key)来索引,它可以被看做是关联数组.我们在一个字典中添加3个键/值对: >>> d = {'a': 1, 'b': ...

  7. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  8. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  9. python字典中的元素类型

    python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...

随机推荐

  1. vue2 -- axios

    4. 通过axios实现数据请求 vue.js默认没有提供ajax功能的. 所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互. 注意,axios本质上就是java ...

  2. Mariadb主从复制

    前戏: mysql的基本命令复习 .启动mysql systemctl start mariadb .linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 .远程链接my ...

  3. struts2各个功能详解(1)----参数自动封装和类型自动转换

    struts2里面的各个功能,现在确实都不清楚,完全属于新学! 通过前面的例子,有时就会疑问,这些jsp中的数据信息是怎么传送给action的?例如: <form action = " ...

  4. 开发模型之V模型

    1.模型目的: V模型的目的在于改进软件开发的效率和效果. 2.常见理论性描述:  V模型从整体上看起来,就是一个V字型的结构,由左右两边组成. 左边的下划线分别代表了需求分析.概要设计.详细设计.编 ...

  5. NoteBook学习(一)-------- Zeppelin VS Jupyter

    notebook1.mdhtml, body {overflow-x: initial !important;}html { font-size: 14px; color: rgb(51, 51, 5 ...

  6. C运算符

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号. C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符.杂项运算符 C 中的运算符优先 ...

  7. MySQL千万级数据库查询怎么提高查询效率

    在实际项目中,当MySQL表的数据达到百万级别时候,普通查询效率直线下降,而且当使用的where条件较多,其查询效率是让人无法容忍的.假如一个taobao订单查询详情要几十秒,可想而知的用户体验是多差 ...

  8. IDEA 上 Tigase8.0 源代码编译运行

    Tigase交流群 :310790965 一些小伙伴们经常问Tigase8 check下来的源代码怎么跑起来,因为我不能及时一 一回答,所以还是写个博文来演示一下吧,一般针对新手而言,老手的话,就跳过 ...

  9. python_appium_模拟器启动app进行登录

    #coding=utf-8from appium import webdriverimport timedesired_caps = {} #列表desired_caps['platformName' ...

  10. 《C++实践之路.pdf》源码

    > 源码下载方法 < >> 打开微信 >> 扫描下方二维码 >> 关注林哥私房菜 >> 输入对应编号获取百度网盘提取密码 全书源码[已更新完 ...