字典

特点: 键值对,键与值之间用:分割,项之间用,分割,整个字典用大括号括起来,空字典由两个大括号组成;

      字典中的键是唯一的,而值并不唯一。

      字典的键不一定为整型数据,也可以是其他不可变类型,比如浮点型,实型,字符串或者元组

      自动添加:即使那个键起初在字典中并不存在,但也可以为它分配一个值,自动添加新的项,

      成员资格:表达式k in d(d为字典)查找的是键,而不是值,表达式v in l(l为列表)则用来查找值,而不是索引。

In [1]: phonebook = {'Alice':'123','Beth':'567'}


4.1 可以用dict函数,将其他键值序列等建立字典.

In [2]: items = [('name','lambert'),('age','20')]
In [3]: d = dict(items)
In [4]: d
Out[4]: {'age': '20', 'name': 'lambert'}
In [8]: ll = dict(name='lambert',age='20')
In [9]: ll
Out[9]: {'age': '20', 'name': 'lambert'}

4.2字典的基本操作

len(d)返回d中项的数量

d[name]返回name对应的值

d[name]=newvalue 将newvalue关联到键name上

del d[name] 删除键为name的项;

name in d 检查d中是否含有键为k的项


4.5字典的格式化字符串

In [24]: phonebook = {'Alice':'123','Beth':'567'}
In [25]: "Alice's phone number is %(Alice)s." %phonebook
Out[25]: "Alice's phone number is 123."

4.6字典的常用方法

clear方法清楚字典中所有项

copy方法返回一个具有相同键值对的新字典,俗称浅复制,只是在原来字典上做个链接,不是副本,可     以“替换”新复制字典的值,但是如果“修改”了某个值,原字典也将改变;

deepcopy方法复制字典所包含的所有值,俗称深复制,里面的值随便改;

fromkeys方法是用给定的键建立新的字典,而键对应的值为None;

get方法更轻松的访问字典项,但是如果访问字典中不存在的项时会出错;

has_key方法可以检查字典中是否含有给出的键,表达式d.has_key(k)相当于表达式k in d.

items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)。但是返回时并没有特殊的顺序;

iteritems方法的作用跟items大致相同,但是会返回一个迭代器对象而不是列表,某些情况下很高效;

In [1]: d = {'FirstName':'Lambert','LastName':'Lee','Age':20}
In [2]: d.items()
Out[2]: [('LastName', 'Lee'), ('Age', 20), ('FirstName', 'Lambert')]
In [3]: d.iteritems()
Out[3]: <dictionary-itemiterator at 0x2df9208>
In [4]: ll=d.iteritems()
In [6]: print ll
<dictionary-itemiterator object at 0x2eedc00>
In [7]: list(ll)
Out[7]: [('LastName', 'Lee'), ('Age', 20), ('FirstName', 'Lambert')]


keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器;

pop方法用来获得对应于给定键的值,然后将这个键值对从字典中移除;

popitem方法随机弹出字典中的项;

setdefault方法在某种程度上类似于get方法,能够获得给定键对应的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的键值;

update方法可以利用一个字典项更新另一个字典;

values方法以列表的形式返回字典中的值

itervalues返回值的迭代器;