3.3 字典
- 字典中元素的“键”可以是Python中任意不可变数据
- 但不能使用列表、集合、字典或其他可变类型作为字典的“键”
- “键”不能重复,“值”可以重复
3.3.1 字典的创建与删除
x = dict() #空字典
x = {}
keys = ['a','b','c','d']
values = [1,2,3,4]
dictionary = dict(zip(keys,values))
print(dictionary)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
aDict = dict.fromkeys(['name','age','sex']) #以给定内容为“键”,创建“值”为空的字典
print(aDict)
{'name': None, 'age': None, 'sex': None}
3.3.2 字典元素的访问
-
格式 : 变量名[‘键’]
- 若键不存在则抛出异常
- 可用if语句事先判断或使用try语句异常处理
-
get()方法访问,允许指定该键不存在时返回特定的“值”
aDict = {'a':1,'b':2}
aDict.get('c','Not Exists')
'Not Exists'
import string
import random
x = string.ascii_letters + string.digits
z = ''.join((random.choice(x) for i in range(1000))) #生成1000个随机字符
d = dict()
for ch in z: #遍历字符串,统计频次
d[ch] = d.get(ch,0) + 1
for k,v in sorted(d.items()): #查看统计结果
print(k,':',v)
- 对字典对象直接进行迭代或者遍历是默认是遍历字典的“键”
- 可使用.items()、.keys()、.values()具体说明
3.3.3 元素的添加、修改与删除
-
当以指定“键”为下标为字典元素复制时:
- 若该“键”存在,则修改其“值”
- 若该“键”不存在,则添加一个新的“键:值”对
-
update()方法可以修改或添加
aDict = {'age':18,'score':[98,97],'name':'xu','sex':'male'}
aDict.update({'a':100,'age':19})
print(aDict)
{'age': 19, 'score': [98, 97], 'name': 'xu', 'sex': 'male', 'a': 100}
- setdefult()方法 用于返回指定“键”对应的“值”,如果字典中不存在该“键”,就添加一个新元素并设置 该“键”对应的“值”,默认为None
aDict = {'age':18,'score':[98,97],'name':'xu','sex':'male'}
aDict.setdefault('b',200)
print(aDict)
{'age': 18, 'score': [98, 97], 'name': 'xu', 'sex': 'male', 'b': 200}
- pop()和popitem()方法可以弹出并删除指定的元素
aDict = {'age':18,'score':[98,97],'name':'xu','sex':'male'}
print(aDict.popitem()) #弹出一个元素
print(aDict.pop('score'))
print(aDict)
('sex', 'male')
[98, 97]
{'age': 18, 'name': 'xu'}