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)的更多相关文章

  1. python之最强王者(3)——变量,条件、循环语句

    1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...

  2. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  3. python之最强王者(1)——python入门简介

    1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  4. python之最强王者(9)——函数

    1.Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  5. python之最强王者(11)——异常(exception)

    1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...

  6. python之最强王者(10)———文件(File)、输入输出的基本操作

    1. Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 2.打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式. ...

  7. python之最强王者(6)——列表(List)

    1.Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...

  8. python之最强王者(5)——Nunber(数字)

    1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...

  9. python之最强王者(4)——字符串

    1.Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界" ...

随机推荐

  1. docker – 你应该知道的10件事

      容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...

  2. CentOS:Yum源的配置

    # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo.bak # wget http://mirrors.163.com/.hel ...

  3. Hello bokeyuan!

    一个学习技术的年轻人 从2016/09/03进入大学学习计算机科学与技术这门学科,我已经学习了4个月了,大学的生活很枯燥,很麻烦,很多事,与我想象中的大学有很大的区别.但是这都不会影响我想要成为一个技 ...

  4. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  5. RCP:ISourceLocator翻译

    org.eclipse.debug.core.model.ISourceLocator A source locator locates source elements for stack frame ...

  6. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  7. ASP.NET Web API 控制器创建过程(一)

    ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...

  8. Android消息处理机制(Handler、Looper、MessageQueue与Message)

    Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取 ...

  9. 再次学习 java 类的编译

    做JAVA开发的都知道myeclipse, 我们在myeclipse中新建一个类,然后保存, 如何正常的话,那么在项目指定的目录(也就是项目的output目录)就会生成同名的class文件, 可是,我 ...

  10. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...