字典
字典是另一种可变容器模型,且可存储任意类型对象。
除了列表以外,字典是也许是python中最灵活的内置数据结构,如果把列表看成有序的集合,那么字典可以当成无序的集合。
他们的主要差别在于:字典当中的元素是通过键来存取的,而不是通过偏移量
作为内置类型,字典可以取代许多搜索算法和数据结构,python字典的主要的属性如下:
通过键而不是偏移量读取
字典有时又叫做关联数组或散列表。它们通过键将一系列值连接起来,这样可以使用键从字典总取出值。
任意对象的无序集合
保存在字典中的数据没有特定的顺序。键提供了字典中象征性(而非物理性)的位置
可变长,异构,任意嵌套
与列表类似,可在原处增长或缩短,它们可以包含任意类型的对象,而且支持任意深度的嵌套
可变映射类型
通过给键赋值,字典可以在原处修改,但是不支持字符串或列表的序列操作,因为字典是无序集合
对象引用表(散列表)
如果说列表是支持位置读取对象引用数据,那么字典是支持键读取的无序对象引用表
字典的每个键值(key-->value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
或者通过dict({key:value})的方式创建字典
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
访问值:
通过键访问 print(dic['list']) 返回:['list1','list2']
print(dic[12]) 返回:'字符串12'
修改或添加:
操作已有的键是修改,操作没有的键是添加
dic['list']='只有一个' #修改
dic['Age']=17 #添加一个监键值对
删除字典/元素或清空:
del dic['list'] 清除键为“list”的元素
del dic 删除字典
dic.clear() 清空字典
特性:
键是唯一的,如果有两个相同的键,后面的会覆盖前面的
键不可变,可以用数字,字符串或元组充当
内置函数和方法:
len(dict) 返回元素个数,键的总数
str(dict) 输出字典,以可打印的字符串表示
type(variable) 返回元素或变量的数据类型
key in dict 如果键在字典里,返回True
clear() 清空字段所有元素
copy() 返回一个字典的复制
keys() 以列表返回一个字典所有的键
values() 以列表返回字典中的所有值
get(key,default==None) 返回指定键的值,如果值不存在字典中,返回default值
setdefault(key,default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
update(dict) 把字典dict2的键/值对更新到dict中
items() 以列表返回可遍历的(键,值)元组数组
其他字典方法
字典方法提供了多种工具字典values和items方法分别返回字典值的列表和(key,value),可以把它们放在list中调用
>>> dic={"name":'南希',"age":17} >>> list(dic.values()) ['南希', 17] >>> list(dic.items()) [('name', '南希'), ('age', 17)]
然而如果当读取读取的键不存在是,将会返回一个默认的None值
>>> print(dic.get("gender")) None
dict的update方法类似合并,它和从左到右的顺序无关,它把参数字典的值合并到调用者字典中,然而盲目的update可能会导致覆盖相同的键值
dic2={"gender":"男"} >>> dic.update(dic2) >>> dic {'name': '南希', 'gender': '男', 'age': 17}
字典使用注意:
序列运算无效:即不可使用dic[0]来使用,她会抛出一个keyError的异常
对新索引赋值会添加项:添加字典中未出现的键值会新建这个键值
键不一定总是字符串:可以是数字,字符串,元组等
关于列表和字典的用法技巧将在对应文章讲解
更多的用法及描述还是需要查看python的官方文档。