字典 dict
什么是字典:
字典是一种可变的容器,可以存储任意类型的数据
字典中的每一个数据都是用'键'进行索引的,而不像序列可以用下标(index)来进行索引
字典中的数据没有先后顺序关系,字典的存储是无序的
字典中的数据以键(key)-值(value)对的形式进行映射存储
字典的键不能重复,具只能用“不可变类型”作为字典的键
字典的字面值的表示方式:
字典的表示方式以{}括起来,以冒号(:)分隔键-值对 ,
各键-值对之间用逗号分割开
创建空字典:
d= {} #d绑定空字典
创建非空字典:
d = {'name':tarena,'age':16 }
d = {'year':2018,'month':4,'day':1}
字典的构造函数:
dict() 生成一个空字典,等同于{}
dict(iterable) 用可迭代对象初始化一个字典
dict(**kwargs) 用命名关键字传参形式生成一个字典
示例:
d = dict()
d = dict([('name','tarena'),('age',15)])
d = dict(name='tarena',age=15)
字典的键为不可变类型:
bool,int,float,complex,str,tuplle,frozenset(固定集合),bytes(字节串)(后面会讲)
包括:None
可变的类型(不能充当字典的键)
list, dict, set(集合),bytearray(字节数组)(后面再讲)
字典的基本操作:
键索引:
语法:
字典[键]
示例:
>>>d= {'name':tarena,'age':15}
>>>d['name']
'tarena'
>>>d['age']
15
添加/修改字典元素
字典[键] = 值对象
示例:
d={}
d=['birthday'] = (2002,1,1) #添加键值对
d['age'] = 16 #添加
d['age'] = 17 #修改'age'键所对应的值
删除字典元素del语句
语法:
del字典[键]
示例:
d={'name':'tarena','age':16}
del d['age'] #删除'age'这个键
字典的成员资格判断 in / not in运算符
用in 运算符可以判断一个键是否存在于字典中,如果存在则返回True,否则返回Fasle
not in 返回值于 in 相反
示例:
d = {1:"一",2:"二"}
1 in d #True
2 in d #True
2 not in d #Fasle
8 not in d #True
8 in d #Fasle
'一' in d #Fasle
字典的迭代访问:
容器是可迭代对象,字典只能对键进行迭代访问
d = {'name':'小张','birthday':(2008,8,8)}
for k in d:
print(k) #name birthday
print('键:',k,'值:',d[k])
可以用于字典的內键(built - in)函数:
len(x) 返回字典的键值对的个数
max(x) 返回字典的键的最大值
min(x) 返回字典的键的最小值
sum(x) 返回字典的所有键的和
any(x) 对所有键进行真值测试,有一个为True结果为True
all(x) 对所有键进行真值测试,所有为True才为True
字典的方法:
见:
>>>help(dict)
D代表字典对象
D.clear() 清空字典
D.pop(key) 移除键,同时返回此键所对应的值
D.copy() 返回字典D的副本,只复制一层(浅拷贝)
D.update(D2) 将字典 D2 合并到D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default) 返回键key所对应的值,如果没有此键,则返回default
D.keys() 返回可迭代的 dict_keys 集合对象
D.values() 返回可迭代的 dict_values 值对象
D.items() 返回可迭代的 dict_items 对象
字典推导式的嵌套:
语法同列表推导式嵌套
字典 VS 列表
1、都是可变对象
2、索引方式不同,列表用整数索引,字典用键索引
3、字典的查找速度可能会快于列表(重要)
4、列表的存储是有序的,字典的存储是无序的