字典是Python唯一内建的映射类型。字典中的值没有顺序,但是存储在一个特定的键下。键可以是数字、字符串、元组。键是唯一的,值并不唯一。
1 创建和使用字典
字典由多个键值对组成,可以通过下面的方式创建字典:
1.1 dict函数
用dict函数,通过其它映射或键值对的序列创建字典,也可以通过关键字参数来创建字典,如下:
1.2 字典与列表的区别
- 键类型:字典的键可以是任意的不可变类型;
- 自动添加:即使键起初不在字典中,也可以为它赋值;
- 成员资格:表达式k in d(d为字典)查找的是键,而不是值。表达式v in l(l为列表)查找的是值,而不是索引。
在字典中检查键的成员资格比在列表中检查值的成员资格更高效,数据规模越大,效率差距越明显。
1.3 字典的格式化字符串
1.4 字典方法
(1)clear:清除字典所有的项。这个是原地操作,无返回值。
(2)copy:返回一个具有相同键值对的新字典(浅复制)
x和y中的machines仍然指向同一个列表,所以修改y中machines值的时候x中的machines也被修改。要解决这个问题,需要使用深复制。
(3)fromkeys:使用给定的键建立新的字典,每个键都对应一个默认的值None,也可以自己提供默认值。
(4)get:访问字典项,相比于[key]更宽松,因为后者在访问不存在的项时会出错,但是get则不会有任何异常,而是返回None,还可以自定义默认值。
(5)has_key:检查字典中是否含有指定的键。Python3.x中不包括这个函数,可以使用in来检查。
(6)items和iteritems,keys和iterkeys,values和itervalues:
items和iteritems:将字典所有的项以列表方式返回,列表中的每一项都是键值对的形式,区别是items返回列表,iteritems返回一个迭代器对象,后者更加高效。Python3.x 里
iteritems已经废除,用 items()替换iteritems() 。
keys和iterkeys:将字典中所有的键以列表的形式返回,而iterkeys返回键的迭代器。Pythons3.x里用keys()替换iterkeys()。
values和itervalues:将字典中所有的值以列表的形式返回,而iterkeys返回值的迭代器。Pythons3.x里用values()替换itervalues()。
(7)pop和popitem:
pop:获得对应给定键的值,然后将该键值对从字典中移除,给定键不存在时,会出现异常。
popitem:弹出随机项。
(8)setdefault:获得与给定键相关联的值,还能在字典不含给定键的情况下设定相应的键值。
(9)update:利用一个字典更新另外一个字典。