学习目标:(1)了解字典数据类型的特点,并学会创建字典。(2)字典元素的访问、添加、修改,删除等操作。(3)学会用字典和列表来存储表格数据,并实现访问。
字典 是一种包含有“键值对”的数据类型,它是无序可变的序列,字典中的每个元素都是一个“键值对”,包含:“键”和“值”。可以通过“键”实现快速获取、删除、更新对应的“值”。
键:可以是整数、浮点数、字符串,元组数据类型(不可变数据类型),列表、字典不能做为键,“键”不能重复。
值:可以是任意数据类型,也可以重复。
创建字典:
>>> a = {"name":"张三","age":13,"gender":"男"} #创建方法1
>>> b = {} #创建一个空字典
>>> c = dict(name = "张三" ,age = 13,gender = "男") #创建方法2
>>> a
{'name': '张三', 'age': 13, 'gender': '男'}
>>> c
{'name': '张三', 'age': 13, 'gender': '男'}
>>> e = dict([("name","张三"),("age",13),("gender","男")]) #创建方法3
>>> e
{'name': '张三', 'age': 13, 'gender': '男'}
#其他的创建方法
>>> a = ["name","age","gender"]
>>> b = ["张三",13,"男"]
>>> c = dict(zip(a,b)) #通过zip方法创建字典
>>> c
{'name': '张三', 'age': 13, 'gender': '男'}
>>> d = dict.fromkeys(["name","age","gender"]) #fromkeys创建值为空的字典
>>> d
{'name': None, 'age': None, 'gender': None}
字典元素的访问
(1)通过索引”键”来获得”值”,如果”键”不存在,则会报错
(2)通过get()方法获得“值”,指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。
>>> a = {"name":"张三","age":13,"gender":"男"}
>>> a["age"]
13
>>> a["phone"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'phone'
>>> a.get("name")
'张三'
列出所有“键”,“值”,“键值”对
>>> a = {"name":"张三","age":14,"gender":"男"}
>>> a.items() #所有的键值对
dict_items([('name', '张三'), ('age', 14), ('gender', '男')])
>>> a.keys() #所有的键
dict_keys(['name', 'age', 'gender'])
>>> a.values() #所有的值
dict_values(['张三', 14, '男'])
字典元素的添加,修改
>>> a = {"name":"张三","age":14,"gender":"男"}
>>> a["age"]=15
>>> a["score"]=90
>>> a
{'name': '张三', 'age': 15, 'gender': '男', 'score': 90}
>>> b = {"name":"李四","score":100}
>>> a.update(b)
>>> a
{'name': '李四', 'age': 15, 'gender': '男', 'score': 100}
(1)给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。 (2)使用update()将参数中的字典内容全部添加到目标字典中。如果key有重复,则直接覆盖。
字典元素的删除
>>> a = {"name":"张三","age":14,"gender":"男"}
>>> del(a["age"]) #删除指定键值对
>>> a
{'name': '张三', 'gender': '男'}
>>> b=a.pop("name") #删除指定键值对,并返回”值”
>>> b
'张三'
>>> a
{'gender': '男'}
>>> a = {"name":"张三","age":14,"gender":"男"}
>>> b=a.popitem() #随机删除键值对
>>> b
('gender', '男')
>>> a
{'name': '张三', 'age': 14}
>>> a.clear() #删除所有”键值对”
字典的其他操作
>>> a = {"name":"张三","age":14,"gender":"男"}
>>> len(a) #测试字典中”键值对”个数
3
>>> "age" in a #in关键字:检测”键”是否在其中
True
实例1:使用字典和列表存储下列表格数据,并实现访问
stu1 = {"name":"张三","gender":"男","age":13,"score":98}
stu2 = {"name":"李四","gender":"女","age":14,"score":95}
stu3 = {"name":"王五","gender":"男","age":13,"score":92}
stu_all = [stu1,stu2,stu3]
print(stu_all[1].get("score")) #获取第2个学生的分数
for i in range(len(stu_all)): #获取所有学生的分数
print(stu_all[i].get("score"))
for i in range(len(stu_all)): #获取所有学生的信息
print(stu_all[i].get("name"),stu_all[i].get("gender"),stu_all[i].get("age"),stu_all[i].get("score"))
实例2:设计一个英汉字典,效果如下:该词典支持的操作有:
1.添加单词
2.查找单词
3.删除单词
4.修改单词解释
5.查看所有的单词
6.查看所有的单词与解释
7.系统已退出
print("英汉词典")
d = dict()#定义一个空字典
while True:
num = input("请根据数字来选择你要的操作"\
"\n1.添加词语\n2.查找词语\n3.删除词语\n4.修改词语的解释"\
"\n5.查看所有的词语\n6.查看所有的词语与解释\n7.退出系统\n")
if num == "7":
print("系统已退出")
break
elif num == "1":
word = input("你输入要想添加的词语")
exp = input("请输入"+word+"的解释")
d[word] = exp
elif num == "2":
word = input("请输入你要查找的词语名称")
if word in d:
print(d.get(word))
else:
print("找不到"+word+"这个词语存在")
elif num == "3":
word = input("请输入你要删除的词语名称")
if word in d:
del(d[word])
else:
print("找不到" + word + "这个词语存在")
elif num == "4":
word = input("请输入你要修改的词语名称")
if word in d:
exp = input("请重新输入"+word+"的解释")
d[word] = exp
else:
print("找不到" + word + "这个词语存在")
elif num == "5":
for i in d.keys():
print(i)
elif num == "6":
for i in d.items():
for j in i:
print(j,end = " ")
print()