字典:反映对应关系的映射类型,字典是包含若干“键:值”元素的无序可变序列,表示一种映射和对应关系,也称为关联数组
一、字典中的键值:
1.键值对之间用冒号分隔,所有元素放在{ }里
2.字典中元素的键是任意的不可变序列,例如整数、复数、实数、字符串、元组等类型,
不能使用列表、集合、字典等可变数据类型
3.字典中的键不允许重复,值是可以重复的
二、字典的创建与删除
创建1:
x = dict() # 用内置dict方式创建空字典
创建2
x = {} #直接创建字典
创建3
keys = ["a","b","c","d"] # 变量可以是列表、也可以是元组,集合
values = [1,2,3,4]
d = dict(zip(keys,values)) # 根据已有数据创建字典
out:{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4}
创建4
d = dict(name = 'zhang',age = 20) # 以关键参数形式创建字典
out:{'name': 'zhang', 'age': 20}
字典推导式创建字典
d = {i:str(i) for i in range(1,5)}
out:{1: '1', 2: '2', 3: '3', 4: '4'}
三、字典元素的访问
字典中的每个元素表示一种映射关系和对应关系,根据字典中的“键”作为下标可以访问对应的值
直接以访问键的形式,访问字典的值
a = {'name':'zhang','age':20,'sex':'man'}
a["age"]# 当访问的键存在时,返回键对应的值
#Out: 20
a["score"] ` # 当访问的键不存在时,抛出异常
#out:KeyError: 'score'
a.keys()# 返回字典中的所有键
out:dict_keys(['name', 'age', 'sex'])
a.values() # 返回字典中的所有值
out:dict_values(['zhang', 20, 'man'])
为避免键不存在抛出异常,可使用if语句,或者是异常处理结构
a = {'name':'zhang','age':20,'sex':'man'}
if 'score' in a:
print(a["score"])
else:
print("Not Exists")
out:Not Exists
异常处理结构
a = {'name':'zhang','age':20,'sex':'man'}
try:
print(a['score'])
except:
print("Not Exists")
# out:Not Exists
利用get方法获取指定‘键’对应的值,并且允许指定该‘键’不存在时返回特定的‘值’。
a = {'name':'zhang','age':20,'sex':'man'}
a.get("age")
#out:20
a.get('score',98) # 键不存在时返回指定的值
out:98
a.get('age',98)
#out:20
遍历字典中的键
for i in a: # 默认遍历键
print(i,end=' ')
#out:name age sex
遍历字典中的值
for i in a.values():
print(i, end=' ')
#out:zhang 20 man
遍历字典中的键值对(元素),以元组的形式返回
for i in a.items():
print(i, end=' ')
#out:('name', 'zhang') ('age', 20) ('sex', 'man')
四、字典元素的添加、修改与删除
当以键为下标为字典元素赋值时:
1.若该键存在,则表示修改该键对应的值
a = {'name':'zhang','age':20,'sex':'man'}
a["age"] = 30
print(a)
#out: {'name': 'zhang', 'age': 30, 'sex': 'man'}
2.若该键不存在,则表示添加一个新的"键:值"对,也就是一个新的元素。
a = {'name':'zhang','age':20,'sex':'man'}
a["score"] = 100
print(a)
#out:{'name': 'zhang', 'age': 30, 'sex': 'man', 'score': 100} #新增键值对('score': 100)
setdefault():用于返回指定键对应的值,如果字典中不存在该“键”,则添加一个新元素并设置该键对应的值(默认为None)
a = {0: 1, 1: 1, 2: 1, 3: 1}
a.setdefault(4)
print(a)
#out:{0: 1, 1: 1, 2: 1, 3: 1, 4: None}
update :可以将另一个字典的“键:值”一次None性全部加到当前字典对象, 如果两个字典中的键重复,则以另一个字典中的值进行更新。
a = {'name':'zhang','age':20,'sex':'man'}
b = {'name':'chen','age':30,"score":98}
a.update(b)
print(a)
#out:{'name': 'chen', 'age': 30, 'sex': 'man', 'score': 98}
del:删除字典元素
a = {'name':'zhang','age':20,'sex':'man'}
del a["name"]
#out:{'age': 20, 'sex': 'man'}
pop(),popitem() :弹出并删除指定元素
a = {'name':'zhang','age':20,'sex':'man'}
a.pop("age") #弹出并删除age对应的值
#out:20
print(a)
#out:{'name': 'zhang', 'sex': 'man'} #键值对('age':20)已删除
a = {'name':'zhang','age':20,'sex':'man'}
a.popitem()
#out: ('sex', 'man') #弹出并删除最后一个元素
clear() 清空字典内的所有元素
a = {'name':'zhang','age':20,'sex':'man'}
a.clear()
print(a)#打印出空字典
#out:{}