python学习心得(2)——字典
(2012-09-25 17:11:09)
标签:
杂谈 |
一、字典介绍
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
1、字典的主要属性
*通过键而不是偏移量来读取
字典有时称为关联数组或者哈希表。它们通过键将一系列值联系起来,这样就可以使用键从字典中取出一项。如果列表一样可以使用索引操作从字典中获取内容。
*任意对象的无序集合
与列表不同,保存在字典中的项并没有特定的顺序。实际上,Python将各项从左到右随机排序,以便快速查找。键提供了字典中项的象征性位置(而非物理性的)。
*可变,异构,任意嵌套
与列表相似,字典可以在原处增长或是缩短(无需生成一份拷贝),可以包含任何类型的对象,支持任意深度的嵌套,可以包含列表和其他字典等。
*属于可变映射类型
通过给索引赋值,字典可以在原处修改。但不支持用于字符串和列表中的序列操作。因为字典是无序集合,根据固定顺序进行操作是行不通的(例如合并和分片操作)。字典是唯一内置的映射类型(键映射到值得对象)。
*对象引用表(哈希表)
如果说列表是支持位置读取对象的引用数组,那么字典就是支持键读取无序对象的引用表。从本质上讲,字典是作为哈希表(支持快速检索的数据结构)来实现的。一开始很小,并根据要求而增长。此外,Python采用最优化的哈希算法来寻找键,因此搜索是很快速的。和列表一样字典存储的是对象引用。
2、常见的字典操作
可以查看库手册或者运行dir(dict)或者help(dict),类型名为dict。当写成常量表达式时,字典以一系列"键:值(key:value)”对形式写出的,用逗号隔开,用大括号括起来。可以和列表和元组嵌套
操作
D1={}
D={'one':1}
D1[key]='class'
D2={'name':'diege','age':18}
D3={'name':{'first':'diege','last':'wang'},'age':18} 嵌套
D2['name']
D3['name']['last']
D['three'][0]
D['six'][1]
D2.has_key('name')
D2.keys()
list(D)
D2.values()
'name' in D2
D2.copy()
D2.get(key,deault)
D2.update(D1)