1. 字典特性
列表是有序对象的集合,字典可以看作是无序对象的集合。差别就在于,列表通过偏移来存取数据,而字典通过键(key)来存取数据。字典主要有以下特点:
1). 无序集合、通过键来读取数据
Python中,字典的各项从左到右随机排序,以便快速查找。字典通过键(key)将一系列的值联系起来,因此字典有时候又叫关联数组(associated array) 或 散列表 (hash)。
2). 可变长度、异构以及任意嵌套
与列表类似,字典也可以可以实时增加、减少长度;可以包含不同类型的对象(异构);可以嵌套列表以及其他字典(嵌套)
3). 可变映射类型
字典不支持用于字符串和列表中的序列操作,它通过键(key)实现到值(value)的映射,支持通过键(key)的索引赋值实现原处修改。
理解字典的最好方式,就是将它看做是一个 (键: 值) 对的集合,在一个字典中,键必须是唯一的,有点像函数的一一映射。和列表一样, 字典的存储是对象引用而不是拷贝。
2. 字典的常见操作
2.1 基础操作
- 创建字典
- 通过{ key1: value1, key2 : value2… } 这种方式创建,或者通过dict( key1 = value1, key2 = value2, …) }来创建。
## 空字典
>>> d = {
}
>>> d
{
}
>>> d = {
'name':'Bob','age':18,'gender':'male'}
>>> d
{
'name': 'Bob', 'age': 18, 'gender': 'male'}
>>> d = dict (name='Bob', age = 18, gender = 'male')
>>> d
{
'name': 'Bob', 'age': 18, 'gender': 'male'}
- 通过dict.fromkeys( [ iterabe [,value] ] )创建,其中iterable是一个可迭代对象,用于创建字典的键,value是键对应的值。需要注意的是,value赋值是把整个value赋值给每一个键。
>>> iterable = ['name','age','gender']
>>> d1 = dict.fromkeys(iterable)
>>> d1
{
'name': None, 'age': None, 'gender': None}
## 赋值
>>> d2 = dict.fromkeys(iterable,values)
>>> d2
{
'name': ['Bob', 18, 'male'], 'age': ['Bob', 18, 'male'], 'gender': ['Bob', 18, 'male']}
- 通过dict([ (key1, value1), (key2, value2)… ])来创建,也就是包含键值对的元组的列表来创建。
>>> d = dict([('name','Bob'),('age',18)])
>>> d
{
'name': 'Bob', 'age': 18}
- 通过dict( zip ( keylist, valuelist ) ] )创建,其中,keylist是键的列表,valuelist是值的列表,这样子就可以实现,键列表和值列表的一一映射。