分类
Python1

字典

学习目标:(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()