`
javatome
  • 浏览: 826584 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

第7章 映像和集合类型(1)

 
阅读更多

7.1 映射类型:字典

字典是Python语言中唯一的映射类型。

一个字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也包括其他容器类型。

字典类型和序列类型容器类的区别是存储和访问数据的方式不同。序列类型只用数字类型的键。映射类型也可以用其他对象类型做键,一般常见的是用字符串做键。和序列类型的键不同,映像类型的键直接或间接地和存储的数据值相关联。

映像类型中的数据是无序排列的。

映射类型通常被称做哈希表,是因为字典对象就是哈希类型的。

你所能获得的有序集合只能是字典中的键的集合或值的集合。方法Keys()或values()返回一个列表,该列表是可排序的。你还可以用items()方法得到包含键、值对的元组的列表来排序。由于字典本身是哈希的,所以是无序的。

多条字典条目被包含在大括号({})里。
7.1.1 如何创建字典和给字典赋值

可以用工厂方法dict()来创建字典,也可以用一个很方便的内建方法fromkeys()来创建一个"默认"字典。

>>> dict1 = dict((("1th", "Runrun"),("2th", "Jing"), ("3th", "Qing")))
>>> dict1["1th"]
'Runrun'
>>> dict2 = {}.fromkeys(("Address", "Hometown"),"Yantai")
>>> dict2["Address"]
'Yantai'
>>>

7.1.2 如何访问字典中的值

可以用keys()方法获取供循环使用的键值列表,也可以用迭代器来轻松访问类序列对象,比如字典和文件。
>>> for key in dict1.keys():
... print key, dict1[key]
...
3th Qing
2th Jing
1th Runrun
>>> for key in dict2:
... print key, dict2[key]
...
Hometown Yantai
Address Yantai
>>>

检查一个字典中是否用某个键的最好方法是用字典的has_key()方法,或者另一种比较好的方法in或not in操作符。

在执行中字典中的键不允许被改变,字典中的键必须是可哈希的,所以数字和字符串和以作为字典中的键,但是列表和其他字典不行。

>>> dict1.has_key("4th")
False
>>> "Address" in dict2
True
>>>

7.1.3 如何更新字典

几种方式对一个字典做修改:1)添加一个新数据项或新元素, 2)修改一个已存在的数据项, 3)删除一个已存在的数据项。

>>> print "1th:%(1th)s 2th:%(2th)s 3th:%(3th)s"%dict1
1th:Runrun 2th:Jing 3th:Qing
>>>

如果字典中该键已经存在,则字典中该键对应的值将被新值替代,上面的print语句展示了另一种在字典中使用字符串格式符(%)的方法。也可以用内建方法update()将整个字典的内容添加到另一个字典。

7.1.4 如何删除字典元素和字典

del语句

>>> del dict2["Hometown"]
>>> dict2
{'Address': 'Yantai'}
>>> del dict1
>>> dict1
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
NameError: name 'dict1' is not defined
>>>

7.2 映射类型操作符

字典不支持像拼接和重复这样的操作。

7.2.1 标准类型操作符

与列表,元组类似

7.2.2 映射类型操作符

1. 字典的键查找操作符([])

键查找操作符既可以用于给字典赋值,也可以用于从字典中取值。

2. 键成员关系操作(in、not in)

用in和not in操作符来检查某个键是否存在于字典中。

7.3 映射类型的内建函数和工厂函数

7.3.1 标准类型函数[type()、str()和cmp()]

字典通过这样的算法来比较的:首先是字典的大小,然后是键,最后是值。


分享到:
评论

相关推荐

    Python核心编程(第二版)PDF高清 part1 共2部分

    第7章 映像和集合类型 第8章 条件和循环 第9章 文件和输入输出 第10章 错误和异常 第11章 函数和函数式编程 第12章 模块 第13章 面向对象编程 第14章 执行环境 第2部分 高级主题 第15章 正则表达式 第16章...

    Python核心编程第二版 高清文字版

    第7章 映像和集合类型 第8章 条件和循环 第9章 文件和输入输出 第10章 错误和异常 第11章 函数和函数式编程 第12章 模块 第13章 面向对象编程 第14章 执行环境 第2部分 高级主题 第15章 正则表达式 第16章...

    Python核心编程 第二版

    第7章 映像和集合类型 第8章 条件和循环 第9章 文件和输入输出 第10章 错误和异常 第11章 函数和函数式编程 第12章 模块 第13章 面向对象编程 第14章 执行环境 第2部分 高级主题 第15章 正则表达式 15.1 ...

    Python 核心编程 第二版

     第7章 映像和集合类型   7.1 映射类型:字典   7.2 映射类型操作符   7.3 映射类型的内建函数和工厂函数   7.4 映射类型内建方法   7.5 字典的键   7.6 集合类型   7.7 集合类型操作符   ...

    数据库系统原理第一章习题.docx

    数据库系统原理第一章习题全文共2页,当前为第1页。数据库系统原理第一章习题全文共2页,当前为第1页。第1章 绪论 数据库系统原理第一章习题全文共2页,当前为第1页。 数据库系统原理第一章习题全文共2页,当前为第1...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   7.1.3 如何更新字典   7.1.4 如何删除字典元素和字典   7.2 映射类型操作符   ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   7.1.3 如何更新字典   7.1.4 如何删除字典元素和字典   7.2 映射类型操作符   ...

    Python核心编程第二版(ok)

     第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   7.1.3 如何更新字典   7.1.4 如何删除字典元素和字典   7.2 映射类型操作符   ...

    Python核心编程第二版

     第7章 映像和集合类型   7.1 映射类型:字典   7.1.1 如何创建字典和给字典赋值   7.1.2 如何访问字典中的值   7.1.3 如何更新字典   7.1.4 如何删除字典元素和字典   7.2 映射类型操作符   ...

    数据库系统原理第一章习题(1).doc

    第1章 绪论 一、选择题 1、数据库系统的核心和基础是( ). A。 物理模型 B. 概念模型 C。 数据模型 D. 逻辑模型 2、实现将现实世界抽象为信息世界的是( )。 A. 物理模型 B. 概念模型 C. 关系模型 D. 逻辑模型 3、...

    数据库系统原理第一章习题.doc

    第1章 绪论 一、选择题 1、数据库系统的核心和基础是( ). A. 物理模型 B。 概念模型 C. 数据模型 D。 逻辑模型 2、实现将现实世界抽象为信息世界的是( )。 A. 物理模型 B. 概念模型 C. 关系模型 D. 逻辑模型 3、...

    数据库系统原理第一章习题(2).doc

    第1章 绪论 一、选择题 1、数据库系统的核心和基础是( )。 A. 物理模型 B. 概念模型 C. 数据模型 D. 逻辑模型 2、实现将现实世界抽象为信息世界的是( )。 A. 物理模型 B. 概念模型 C. 关系模型 D. 逻辑模型 3、...

    数据库系统原理第一章习题(3).doc

    第1章 绪论 一、选择题 1、数据库系统的核心和基础是( )。 A. 物理模型 B. 概念模型 C. 数据模型 D. 逻辑模型 2、实现将现实世界抽象为信息世界的是( )。 A. 物理模型 B. 概念模型 C. 关系模型 D. 逻辑模型 3、...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 ...

Global site tag (gtag.js) - Google Analytics