- 字典 dict
什么是字典:
1.字典是一种可变的容器,可以存储任意类型的数据
2.字典中的每个数据都是用"键"(key)进行索引的,而不是序列可以用索引下标进行索引
3.字典中的数据没有先后顺序关系,字典的存储是无序的
4.字典的数据以键-值对(key-value)的形式进行映射存储
5.字典的键不能重复,且只能用不可变类型作为字典的键
字典的字面值表示方法:
以{}括起来,以冒号(:)分隔键-值对,各键值对用逗号分隔开
创建空字典:
d = {} #{} 表达式用来创建一个空的字典
创建非空字典:
d = {'name':"wangyangming",'age':25}
d = {'a':100}
d = {'a':tuple("abc")}
d = {'abc':list('ac')}
d = {'a':{'b':100,'c':200}}
d = {True:'真值',False:'假值',None:'空',100:'一百'}
d = {(1970,1,1):"计算机元年"}
字典的构造函数 dict
dict() 创建一个空的字典,等同于{}
dict(interable) 用可迭代对象创建一个新的字典
dict(**kwargs) 用关键字传参形式创建一个新的字典
示例:
d = dict()
d = dict([('name','tarena'),('age',15)]
d = dict((['name','wbq'],'ab'))
d = dict(name= 'tarena',age =15)
字典的基本操作
字典的键索引
用[]运算符可以获取字典内'键'对应的'值'
语法:
v = 字典[键]
示例:
d = {'name':'tarena','age':20}
print(d['name'],'今年',d['age'],'岁') #tarena 今年 20 岁
添加和修改字典的元素
字典[键] = 表达式
示例:
d = {}
d['name'] = 'tarena' #创建新的键'name'同时关联值
d['age'] = 15 #创建键并绑定15
d['age'] = 16 #修改原来的键'age',重新绑定为16
print(d) #{'name': 'tarena', 'age': 16}绑定为16
说明:
键不存在,创建键,并绑定值
键存在,修改键的绑定关系
删除字典元素 del
del 字典[键]
示例:
d = {1:"-",'hello':world,True:'真值'}
del d['hello']
字典的in / not in 运算符
in /not in
in 用来判断一个键是否存在于字典中,如果存在返回True,否则返回False
not in 的返回结果与in相反
示例:
d = {'name':'小张','age':20}
'name' in d # True
'age' not in d #False
'小张' in d #False 只判断键不判断值
20 not in d #True
字典的迭代访问
字典是可迭代对象,字典只能对'键'进行访问
示例:
d = {'aaa':111,'bbb':222,'ccc':333}
for k in d:
print(k) #aaa
#bbb
#ccc
可以用于字典的函数:
len(x) 返回字典的键值对个数
man(x) 返回字典的最大值
min(x) 返回字典的最小值
sum(x) 返回字典的所有键的和
any(x) 真值测试,只对键进行测试
all(x) 真值测试,全部键为真值,结果才为True
示例:
d = {0:'零',5:'五',8:'八',3:'三'}
len(d) # 4
max(d) # 8
min(d) # 0
sum(d) #16
any(d) # True
all(d) # False
字典的方法:
方法名 说明
d.clear() 清空字典
d.pop(key) 移除键,同时返回此键对应的值
d.copy() 移除字典d的副本(浅拷贝)
d.updata(d2) 将字典d2合并到d中,如果键相同,则此键的值取d2的值为新值
d.get(key,default) 返回键key所对应的值,如果没有此键,则返回default的值
d.keys() 移除字典d的副本(浅拷贝)返回可迭代的dict_keys集合对象
d.values() 移除字典d的副本(浅拷贝)返回可迭代的dice_value集合对象
d.items() 返回可迭代的dict_item对象
示例:
d = {1:'one',2:'two'}
d2 = {2:'二',3:'三'}
d3 = d.copy()
d3.pop(1) # d3 = {2:'two'}
d.updata(d2) #{1:'one',2:'二',3:'三'}
for k in d.keys():
print(k) #1,2,3
for v in d.values():
print(v) #"one" "二" "三"
for t in d.items():
print(t) #(1,'one')(2,'二')(3,'三')
for k,v in d.items(): #在地点中可以加多个变量
print("键",k,"对应的值是",v)
字典推导式:
是用可迭代对象生成字典的表达式
语法:
{键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]}
注:[]表示其中的内容可以省略
示例:
生成一个字典,键位数字1-9,值为键的平方
d = {x:x**2 for x in range(1,10)}
字典推导式的嵌套等同于列表推导式的嵌套:
字典vs 列表
1.都是可变对象
2.索引方式,列表用整数索引,字典用键索引
3.字典的插入,删除,修改的速度可能会快于列表(重要)
4.列表的存储是有序的,字典的存储是无序的