文章目录
字典:当索引不好用时
引言
- 映射(mapping)时一种通过名字来引用值的数据结构
- 字典由多个键及与其对应的值构成的键-值对(项)构成
- 字典的值并没有特定的顺序,但是都储存在特殊的键(key)下
- 键可以是不可修改元素
4.2 创建和使用字典
4.2.1 创建字典
一般形式
键和值之间用:分开;每项之间以,分隔开;整个字典由大括号括起来;空字典为一对大括号
dict”函数”
1 2 3 4 5 6 7 8 9 10 |
class dict(object): dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2) |
- 使用dict函数,通过其他映射或者键-值对的序列建立字典
- 通过关键字参数创建字典
- 不给参数时创建空字典
4.2.2 基本字典操作
类似序列操作
1 2 3 4 5 6 |
>>> len(d) #返回项数 >>> d[k] #返回键k关联的值 >>> d[k]=v #将值v关联到键k上 >>> del d[k] #删除键为k的项 >>> k in d #检查d中是否有键为k的项 |
序列异
- 键必须是不可变元素
- 向字典中不存在的键(关联的值)赋值时会自动创建这项;列表向范围外添加元素会引发错误
- k in dict <-> v in lst
用于格式化字符串
1 2 3 |
>>>'%(name)'s things!'%{'name':'info'} 'info's things!' |
类似string.Template类
4.2.3 字典方法
清除项方法
1 2 |
dict.clear()->None |
原地清除字典中所有项;注意:它甚至连原始字典都会清除,所有关联上原始字典的都会清空
复制方法
1 2 3 |
dict.copy() # 返回一份复制项(值引用)的字典 dict.deepcopy() # 返回一份复制项(值复制)的字典 |
键建字典方法
1 2 3 4 5 |
fromkeys(iterable, value=None, /) method of builtins.type instance Returns a new dict with keys from iterable and values equal to value {}.fromkeys(['name','age'],'(unKnown)') |
访问字典项方法
1 2 |
dict.get(k[,d=None])-> D[k] if k in D, else d. d defaults to None |
使用get不像下标读取,若找不到,不会引发异常
检查键
1 2 |
dict.has_key()_ |
基本等于 k in dict, python3 后没有这个函数
弹出随机项
1 2 |
dict.popitem() #随机弹出一个键值对作为元组,当字典为空则引发引发KeyError |
设置默认值
1 2 |
dict.setdefault(k[,d=None]) -> D.get(k,d), also set D[k]=d if k not in D |
更新方法
1 2 |
dict.update([E,]**F) |
使用一个字典更新另一个字典项,没有的会被创建,有的会被覆盖
值方法
1 2 3 |
dict.values() #返回一个值的列表 dict.itervalues() #返回值的迭代器 |