1、映射(mapping):通过名字引用值的数据结构。字典是Python中唯一内建的映射类型,字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里。键可以是数字、字符串甚至是元组。
2、字典比较适用的情形:表征游戏棋盘的状态,每个键都是由坐标值组成的元组;存储文件修改次数,用文件名作为键;数字电话/地址簿
3、字典的创建和使用
phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'},使用大括号,每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开
空字典用{}
dict函数,通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典
item=[('name','Gumby'),('age',42)]
d=dict(items)
d={'age':42,'name':'Gumby'}
d['name']='Gumby'
4、字典的基本操作
len(d)返回d中项(键-值对)的数量
d[k]返回关联到k上的值
d[k]=v将值V关联到k上
del d[k]删除键为k的项
k in d检查d中是否含有键为k的项
键类型:字典的键不一定为整型;自动添加:即使那个键起初在字典中并不存在,也可以为它分配一个值;成员资格:k in d 查找的是键
5、字典的方法
clear方法清除字典中所有的项。这个是原地操作,没有返回值(返回None)
copy方法,返回一个具有相同键值对的新字典,为浅复制
deepcopy 深复制,修改原始字典,不会修改后续复制的字典
fromkeys使用给定的键建立新的字典,每个默认对应的值为None
get方法是个更宽松的访问字典项的方法。get可以访问字典中不存在的项,返回None
has_key检查字典中是否含有给出的键。d.has_key(k)相当于k in d
items 将所有的字典项以列表方式返回(键,值)
iteritems作用于items大致相同,但是返回一个迭代器对象而不是列表。iteritems更高效
keys将字典的键以列表形式返回
iterkeys返回针对键的迭代器
pop方法用来获得对应于给定的值,然后将这个键-值对从字典中移除
popitem方法类似于list.pop,后者会弹出列表的最后一个元素。但是不同的是,popitem弹出随机的项,因为字典并没有“最后的元素”或者其他顺序的概念。
setdefault方法在某种程度上类似于get方法,就是能获得与给定键相关联的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的键值。当键不存在是,setdefault返回默认值并相应的更新字典,如果键存在,那么就返回与其对应的值,但不改变字典。默认值是可选的。不设定会默认为None.
update方法可以利用一个字典项更新另外1个字典。提供的字典中的项会被添加到旧的的字典中,若有相同的键则会进行覆盖。
values和itervalues 前者以列表的形式返回字典中的值,后者返回值得迭代器。与返回键的列表不同的是,返回键的列表中可以包含重复的元素。