码迷,mamicode.com
首页 > 编程语言 > 详细

python 核心编程(第二版)——映射和集合类型

时间:2017-10-16 19:43:02      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:items   常见   pen   存在   一对多   其他   列表   数据结构   color   

1.字典

字典是Python 语言中唯一的映射类型。映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系。一个字典对象是可变的,它是一个容器类型,能存储任意个数的Python 对象,其中也包括其他容器类型。字典类型和序列类型容器类(列表、元组)的区别是存储和访问数据的方式不同。序列类型只用数字类型的键(从序列的开始起按数值顺序索引)。映射类型可以用其他对象类型做键;一般最常见的是用字符串做键(keys)。和序列类型的键不同,映射类型的键(keys)直接,或间接地和存储的数据值相关联。但因为在映射类型中,我们不再用"序列化排序"的键(keys),所以映射类型中的数据是无序排列的。

核心笔记:什么是哈希表?它们与字典的关系是什么?

序列类型用有序的数字键做索引将数据以数组的形式存储。一般,索引值与所存储的数据毫无关系。还可以用另一种方式来存储数据:基于某种相关值,比如说一个字符串。哈希表是一种数据结构:它按照我们所要求的去工作。哈希表中存储的每一条数据,叫做一个值(value),是根据与它相关的一个被称作为键(key)的数据项进行存储的。键和值合在一起被称为“键-值 对”(key-value pairs)。 哈希表的算法是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储你的值。任何一个值存储的地址皆取决于它的键。正因为这种随意性,哈希表中的值是没有顺序的。你拥有的是一个无序的数据集。

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

一个字典条目的语法格式是 键:值。 而且,多条字典条目被包含在( { } ) 里。创建字典只需要把字典赋值给一个变量,不管这个字典是否包含元素。

从Python 2.2 版本起, 可以用工厂方法 dict() 来创建字典;

从Python 2.3 版本起, 可以用一个很方便的内建方法fromkeys() 来创建一个"默认"字典, 字典中元素具有相同的值 (如果没有给出, 默认为None)。如:ddict = {}.fromkeys((‘x‘, ‘y‘), -1);

要想遍历一个字典(一般用键), 你只需要循环查看它的键,ex:for key in dict2.keys();从Python 2.2开始,可以用迭代器来访问类序列对象,ex:for key in dict2(dict2为创建的字典);

要得到字典中某个元素的值, 可以用你所熟悉的字典键加上中括号来得到:ex dict2[‘name’];

检查一个字典中是否有某个键的最好方法是in 或 not in 操作符。

可以通过以下几种方式对一个字典做修改:

(1)添加一个新数据项或新元素(即,一个键-值对);

(2)修改一个已存在的数据项;

(3)或删除一个已存在的数据项。

技术分享
1 >>> dict2[name] = venus # 更新已有条目
2 >>> dict2[port] = 6969 # 更新已有条目
3 >>> dict2[arch] = sunos5# 增加新条目
4 >>>
5 >>> print host %(name)s is running on port %(port)d %dict2
6 host venus is running on port 6969
View Code

上面的print 语句展示了另一种在字典中使用字符串格式符( %)的方法。用字典参数可以简化print 语句,因为这样做你只须用到一次该字典的名字,而不用在每个元素出现的时候都用元组参数表示。

 

python 核心编程(第二版)——映射和集合类型

标签:items   常见   pen   存在   一对多   其他   列表   数据结构   color   

原文地址:http://www.cnblogs.com/christal-11/p/7678033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!