python之最强王者(8)——字典(dictionary)
1.Python 字典(Dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1.1创建字典
示例1
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩" }
1.2访问字典里的值
示例2:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/9/12 22:17
# @Author : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
print "输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
示例2 运行结果
输出 德玛西亚之力 的名字: 盖伦
Traceback (most recent call last):
输出 寒冰射手 的名字
File "E:/python/hello/untitled3/dictionary.py", line 9, in <module>
print "输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'
注意:如果字典没有对应的key值则会抛出异常,如上例运行结果
1.3字典添加元素
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
示例3
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/9/12 22:17
# @Author : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希" # 添加新数据
print "输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
示例3 运行如下
输出 德玛西亚之力 的名字: 盖伦 输出 寒冰射手 的名字 艾希
1.4删除字典元素
示例4:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/9/12 22:17
# @Author : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希" # 添加新数据
print "输出 寒冰射手 的名字", d["寒冰射手"]
del d["寒冰射手"] # 删除该值
print "删除后 输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
示例4 运行结果
输出 德玛西亚之力 的名字: 盖伦
Traceback (most recent call last):
输出 寒冰射手 的名字 艾希
File "E:/python/hello/untitled3/dictionary.py", line 12, in <module>
删除后 输出 寒冰射手 的名字
print "删除后 输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
KeyError: '\xe5\xaf\x92\xe5\x86\xb0\xe5\xb0\x84\xe6\x89\x8b'
2.字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
示例 5
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/9/12 22:17
# @Author : wwyx
d = {"德玛西亚之力": "盖伦", "德邦总管": "赵信", }
name = {"暗夜猎手": 2, 2: "薇恩"}
print "输出 德玛西亚之力 的名字:", d["德玛西亚之力"]
d["寒冰射手"] = "艾希" # 添加新数据
print "输出 寒冰射手 的名字", d["寒冰射手"]
d["寒冰射手"] = "凯瑟琳" # 修改数据
print "修改后 输出 寒冰射手 的名字", d["寒冰射手"] # 没有对应的值抛出异常
示例 5 运行结果
输出 德玛西亚之力 的名字: 盖伦 输出 寒冰射手 的名字 艾希 修改后 输出 寒冰射手 的名字 凯瑟琳
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
示例6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2016/9/12 22:17
# @Author : wwyx
name = {("暗夜猎手", "薇恩"): 2, 2: "薇恩"}
print "输出 元组为('暗夜猎手', '薇恩') 的名字:", name[("暗夜猎手", "薇恩")]
示例 6 运行结果
输出 元组为('暗夜猎手', '薇恩') 的名字: 2
字典内置函数&方法
Python字典包含了以下内置函数:
| 序号 | 函数及描述 |
|---|---|
| 1 | cmp(dict1, dict2) 比较两个字典元素。 |
| 2 | len(dict) 计算字典元素个数,即键的总数。 |
| 3 | str(dict) 输出字典可打印的字符串表示。 |
| 4 | type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 |
Python字典包含了以下内置方法:
| 序号 | 函数及描述 |
|---|---|
| 1 | radiansdict.clear() 删除字典内所有元素 |
| 2 | radiansdict.copy() 返回一个字典的浅复制 |
| 3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
| 4 | radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
| 5 | radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回false |
| 6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
| 7 | radiansdict.keys() 以列表返回一个字典所有的键 |
| 8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
| 9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
| 10 | radiansdict.values() 以列表返回字典中的所有值 |
python之最强王者(8)——字典(dictionary)的更多相关文章
- python之最强王者(3)——变量,条件、循环语句
1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...
- python之最强王者(7)——元组(tuple)
1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...
- python之最强王者(1)——python入门简介
1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...
- python之最强王者(9)——函数
1.Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...
- python之最强王者(11)——异常(exception)
1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...
- python之最强王者(10)———文件(File)、输入输出的基本操作
1. Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 2.打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式. ...
- python之最强王者(6)——列表(List)
1.Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...
- python之最强王者(5)——Nunber(数字)
1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...
- python之最强王者(4)——字符串
1.Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界" ...
随机推荐
- 获取打开的Word文档
using Word = Microsoft.Office.Interop.Word; int _getApplicationErrorCount=0; bool _isMsOffice = true ...
- ResponsibleChain(责任链模式)
/** * 责任链模式 * @author TMAC-J * 老板讲任务交给CTO,CTO自然不会亲自去做,又把人物分配给项目经理,项目经理再把任务分配给组长,组长再分配给个人 * 如果中途哪个环节出 ...
- Android之网络数据存储
一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...
- 真正的汉化-PowerDesigner 16.5 汉化
一.背景 经常使用PowerDesigner,之前使用15版本,后来16出来后,就一直在使用16,不过一直是英文.一些同事对使用英文版总显示有些吃力. 遍寻百度.必应,都没有找到真正的针对版本16的汉 ...
- VIM教程
vim 的环境设定参数 :set nu :set nonu 就是设定与取消行号啊! :set hlsearch :set nohlsearch hlsearch 就是 ...
- 最新Angular2案例rebirth开源
在过去的几年时间里,Angular1.x显然是非常成功的.但由于最初的架构设计和Web标准的快速发展,逐渐的显现出它的滞后和不适应.这些问题包括性能瓶颈.滞后于极速发展的Web标准.移动化多平台应用, ...
- C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁
系列文章 C#开发奇技淫巧一:调试windows系统服务 C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件 C#开发奇技淫巧三:把dll放在不同的目录让你的程序更整洁 程序目录的整理 ...
- ABP框架 - 仓储
文档目录 本节内容: 默认仓储 自定义仓储 自定义仓储接口 自定义仓储实现 基仓储方法 查询 获取单个实体 获取实体列表 关于 IQueryable 自定义返回值 插入 更新 删除 其它 关于异步方法 ...
- ASP.net 使用ConfigurationManager获取连接字符串
在解决方案资源管理器里右键单击解决方案选择“添加引用”,并且从 .net 中找到 System.Configuration 引用它 在项目的web.config文件中添加 <connection ...
- MySql常用数据类型分析
整数类型 TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT 分别使用8,16,24,32,64位存储空间,值得范围-2的(N-1)方到2的(N-1)方-1.根据需要存储的范围 ...