字典(Dictionary)
也是序列(sequence)的一种,是另一种可变容器模型。字典的值并没有特殊的顺序,但是都存储在一个特定的键(Key)下。键可以是任意类型对象,如字符串、数字、元组等其他容器模型。
与列表通过编号引用值不同,字典是一种通过名字来引用值的数据结构。这种数据结构称为映射(mapping)。字典是Python中唯一内建的映射类型。
创建字典的目的,就是为了通过轻松查找某个特定的词语(键),从而找到它的定义(值)。
字典由键和对应值成对组成。
·每个键和它的值之间用冒号(:)隔开,
·项之间用逗号(,)隔开,
·整个字典用一对大括号{}包起来。如下例所示:
D1= {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
注意:键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
也可以用dict( )类型,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典
比如有序列:L1 = [(‘aaa’, 111), (‘ABC’, 123) ]
D = dict( L1 )
那么D就被设置为 { ‘aaa’:111,‘ABC’, 123}
· led (d) 返回字典d中(键-值)对的数量;
· d[k] 返回关联到键k上的值;
· d[k] = v 将键K关联的值设置为v
· del d[k] 删除键为K的项
· k in d 检查d中是否有含有键为K的项
字典与列表的一些重要区别:
· 成员资格: 表达式k in d查找的是键,这就是我最开始说的,字典通过名字来引用值。
· 键类型:字典的键没必要非得是整型数据,键可以是任意不可变类型。
· 自动添加:即是键起初在字典中并不存在,也可以为它赋值,这样字典就会建立新的项。
· dict.clear()-----删除字典内所有元素
· dict.copy()-----返回一个字典的浅复制
这个操作在副本字典中替换(只是把键对应的值换了)值的时候,原始字典不变
当副本字典中的值被原地修改(比如删除或添加某值)之后,原始字典也变化
解决方法是使用函数deecopy
· ict.fromkeys(seq[, val]))-----创建一个新字典,以序列seq 中元素做字典的键,val 为字典所
有键对应的初始值
· dict.get(key, default=None)----- 返回指定键的值,如果值不在字典中返回default值
· dict.has_key(key)----- 如果键在字典dict里返回true,否则返回false
· dict.items()-----以列表返回可遍历的(键, 值) 元组数组
· dict.keys()-----以列表返回一个字典所有的键
· dict.setdefault(key, default=None)----- 和get()类似, 但如果键不存在于字典中,将会添加键并
将值设为default
· dict.update(dict2)----- 把字典dict2的键/值对更新到dict里
· dict.values()-----以列表返回字典中的所有值
· pop(key[,default])----- 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
· popitem()-----随机返回并删除字典中的一对键和值。