字符串 列表 元组 字典 集合-3.11字典

一、引入

场景1

如果有列表

nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi'];

  

如果发现"xiaoWang"这个名字写错了,通过下标既可以修改

nameList[1] = 'xiaoxiaoWang'

  

但如果列表的顺序发生了变化,如下

nameList = ['xiaoWang', 'xiaoZhang',  'xiaoLi'];

  

此时就必须需要修改下标,才能完成名字的修改

nameList[0] = 'xiaoxiaoWang'

  

问:有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?

场景2

学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?

students = [[1001, "王bao强", 24], [1002, "马rong", 23], [1005, "宋x",24], ...]

  

假如上述列表有100个人的信息,此时会发现想要找到某个人的信息虽然我们可以数数0、1、2、。。。。但这也太麻烦了

问:有没有更方便的方式呢?

通过上面的2个场景的描述,发现虽然列表可以很轻松的实现数据的正删改查,但当多个数据时,想要快速定位到某个数据就会很不方便

基于此原因,Python发明了一种特殊的下标,可以快速的找到想要的数据

拥有这种特殊下标的数据类型就是字典

二、基本使用

1. 定义格式

{key: value, key2: value ...}

  

说明:

  • key可以理解为:我们自己可以定义的下标
  • value可以理解为:我们要存储的真正的数据
  • 字典只要存储一个数据,就必须用key: value(我们常称为键值对)组成

2. 示例

定义一个字典,存储王老师的信息

teacher_wang = {"name": "王老师", "age": 18, "home": "山东省青岛市", "web_site": "www.codetutor.top"}

  

如果感觉一行太长,写不开,可以用如下的方式

teacher_wang = {
    "name": "王老师",
    "age": 18,
    "home": "山东省青岛市",
    "web_site": "www.codetutor.top"
}

  

说明:

  • 字典能够存储多个数据
  • 列表中找某个元素时,是根据下标进行的,字典中找某个元素时,是根据'key'(就是冒号:前面的那个值,例如上面代码中的'name'、'home'、'age')
  • 字典的每个元素由2部分组成,键:值

3. 根据key访问value

teacher_wang = {
    "name": "王老师",
    "age": 18,
    "home": "山东省青岛市",
    "web_site": "www.codetutor.top"
}

print(teacher_wang['name'])  # 获取姓名
print(teacher_wang['age'])  # 获取年龄
print(teacher_wang['home'])  # 获取住址
print(teacher_wang['web_site'])  # 获取网站

  

结果:

王老师
18
山东省青岛市
www.codetutor.top

  

三、遍历字典

1. keys()

遍历字典的key(键)

teacher_wang = {
    "name": "王老师",
    "age": 18,
    "home": "山东省青岛市",
    "web_site": "www.codetutor.top"
}

for key in teacher_wang.keys():
    print(key)

  

运行结果

name
age
home
web_site

  

2. values()

遍历字典的value(值)

teacher_wang = {
    "name": "王老师",
    "age": 18,
    "home": "山东省青岛市",
    "web_site": "www.codetutor.top"
}

for val in teacher_wang.values():
    print(val)

  

运行结果

王老师
18
山东省青岛市
www.codetutor.top

  

3. items()

遍历字典的项(元素)

teacher_wang = {
    "name": "王老师",
    "age": 18,
    "home": "山东省青岛市",
    "web_site": "www.codetutor.top"
}

for temp in teacher_wang.items():
    print(temp)  # 此时temp是元组

  

运行结果

('name', '王老师')
('age', 18)
('home', '山东省青岛市')
('web_site', 'www.codetutor.top')

  

posted @ 2021-12-14 10:42  dong4716138  阅读(40)  评论(0编辑  收藏  举报