(1)通过健(key)而非下标索引(位置偏移)访问数据
字典的数据访问不是通过下标索引,而是通过它的键来访问,这里的键叫做“key”,它所存储的值叫做“value”,所以说它的存储结构基本上就是一个键一个值,就是平时我们所说的键值对。
(2)可包含任意对象的无序集合
在默认的字典表里,它里边的元素是无序的,创建字典时的顺序和呈现时的顺序可能会不一样。
> dt = {"name":"Tom", "number":201505160021, "age":20}
(3)可变长度、异质、可以任意嵌套
(4)属于可变映射分类
在映射里,字典属于可变映射分类。
(5)对象引用表(Hash Table)
字典的存储本质是一个对象引用的表,它的存储机制是哈希表。
创建字典的方法
Python中的字典用大括号表示,注意每个项目的键和对应值之间用冒号分隔,冒号“:”左边是键,右边是对应值;每个项目之间用“,”分隔。在同一个字典中,可以包含多种不同类型的数据。
(1)创建一个空字典{}
> d = {}
> d
> dct3 = {"name":"Tom", ["num",3]:"20150516021"}
#字典的键不能是列表,因为它是可变序列
注意:字典的键只能是不可变的元素。
虽然从语法上来说,整数、小数、元组,只要是不可变的元素都是可以作为键的,但实际开发的时候键是有实际意义的,代表具体的要存储的信息。
类型转化:
列表转化为字典:要求列表中的每个元素是 长度为2的元组 或 长度为2的列表
在字典表里有一个叫dict()的函数,它能够将参数中指定的信息转换为字典表的数据结构。其语法如下:
dict(key=value)
> book = dict(title="Python入门", author="Tom", price=59.9)
注意:括号里参数的形式和一般函数参数传入的方式不同,是以关键字参数形式进行传参。
#以函数形式定义字典表时,键不加引号,但输出时是加了引号的
注意:在用dict( )函数申明字典表的方式中,以参数等于值(key=value)的形式呈现,参数在写的时候不要加上引号(即字符串),但不加引号申明的键它默认会加上一个引号
即它以字符串的类型来转换你输入的键。但是请注意这种申明方式时键不能是整数、浮点数、元组以及列表。
实际上,使用“dict( )”函数的形式来申明字典表,还有更多更灵活的方式:比如将一个列表转换为一个字典表。
注意:列表的每个元素又是一个元组或者一个列表。
dict([(key,value),(key,value)]):将由元组构成的列表转换为字典表。
> y = dict([("name", "Tom"), ("age", 20)]) #列表里的每个元素是一个元组
> y
> x = dict([["name", "Tom"], ["age", 20]]) #列表里的每个元素又是一个列表
> x
字典的方法“.fromkeys( )”
通过字典表里的一个方法“.fromkeys( )”来申明,将列表中的每个元素作为字典表里的一个键,没有值的地方总是设定为“None”,就是空对象。
> keys = ['name', 'age', 'job'] #注意此处是一个列表
> emp = dict.fromkeys(keys) #调用字典表的方法“.fromkeys()”来申明一个字典
> emp
增加:
dt[k] = new_v
修改或者增加。修改字典元素的键k对应的值v为new_v,如果键不存在,则增加一个键值对
删除:
del dt[k]
删除键值对。删除键值对<k, v>,如果键不存在,则产生异常“KeyError”
访问方法:
dt. get(key)
或 dt[k]
字典合并:
dict(d1.items() + d2.items())
1. d1.items()获取字典的键值对的列表
2. d1.items() + d2.items()拼成一个新的列表
3. dict(d1.items()+d2.items())将合并成的列表转变成新的字典
或
d3 = d1.copy()
d3.update(d2)