字典的用途
- 表示棋盘的状态,其中每个键都是由坐标组成的元组
- 存储文件修改时间,其中键为文件名
- 数字电话/地址簿
字典的创建和使用
字典由键和相应的值组成,这种键值对称为项;键和值之间用:隔开;项与项之间用,隔开,空字典用花括号表示{}
在字典中键必须是独一无二的,但是值不用
函数dict
可使用函数dict从其他映射(如其他字典)或键值对序列创建字典
或者使用关键字实参来调用
基本的字典操作
- len(d)返回d包含的项(键值对)数
- d[k]返回与键k相关联的值
- d[k] = v 将值v关联到键k
- del d[k]删除键为k的项
- k in d 检查字典d是否包含键为k的项
字典跟列表的区别
键的类型:字典中键可以是整数,但并非必须是整数;字典中的键可以试任何不可变的类型:浮点数、字符串、元组
自动添加: 字典中原本没有键,也可以给它赋值,会在字典中创建一个新项;但是如果不使用append等方法的话就不能给列表中的元素赋值
成员资格:表达式k in d(d是字典)查找的是键不是值 v in l(l是列表)查找的是列表中的值而不是索引
将字符串格式设置功能用于字典
即在字典中包含的各种信息,只需要在格式字符串中提取所需的信息即可
字典方法
clear: 删除所有字典项,返回None
copy:复制,返回一个新字典,其中包含的键值对跟原来的字典相同(这个方法是浅复制,操作的是原件,而非副本)
替换副本中的值,原件不受影响,修改副本中的值(就地址修改),原件也发生变化,这个时候我们需要深复制----deepcopy,即无论怎样操作原件,都不影响复制出来的副本
fromkeys:创建一个新字典,其中包含指定的键,且每个键对应的都是None,如果不想使用默认值,也可以使用特定的值
get:获取指定键的值。get为访问字典项提供了宽松的环境;因为通常情况下若是没有这个键则会报错,但是get不会报错,只返回None
items:返回一个包含所有字典项的列表,字典项在列表中的顺序不确定
这种返回值类型叫做字典视图,可用于迭代,还可以确定其长度以及对齐执行成员资格检查
字典视图的有点是不复制,是底层字典的反应,会随着字典的改变而改变
keys:返回一个字典视图,其中包含指定字典中的键
pop:用于获取与指定键相关联的键,并将改键值对从字典中删除
popitem:类似于list.pop,但是popitem随机弹出一个字典项
setdefault:获取与指定键相关联的值,在字典不包含改键时,在地点中添加指定的键值对
值是可选的(第二个参数,没有的话默认为None)
update:使用一个字典中的项来更新另一个字典;如果当前字典中包含相同的键就替换键对应的值,若不包含就新增
values:返回一个有字典中的 值 组成的字典视图,values返回的视图可能包含着重复的值