字典
特点: 键值对,键与值之间用:分割,项之间用,分割,整个字典用大括号括起来,空字典由两个大括号组成;
字典中的键是唯一的,而值并不唯一。
字典的键不一定为整型数据,也可以是其他不可变类型,比如浮点型,实型,字符串或者元组
自动添加:即使那个键起初在字典中并不存在,但也可以为它分配一个值,自动添加新的项,
成员资格:表达式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返回值的迭代器;