day07字典
01. 字典
1. 字典存在的价值
可以在同时保存多个意义不同的数据的时候通过key来对数据进行 区分 和 说明
stu = {
'姓名': '小明', 'age': 30, 'tel': '188', 'score': 90, '体重': 70}
print(stu['姓名'])
2. 什么是字典(dict)
字典是容器型 数据类型;将{ }作为容器的标志,
里面有多个元素(元素是 键值对)用逗号隔开: {键1:值1, 键2:值2, 键3:值3,…}
字典的元素:必须是键值对;
键 - 必须是不可变数据, 一般用字符串; 唯一的(功能是对值进行说明)
值 - 任何类型的数据都可以,可以重复。 (值才是字典真正要保存的数据)
**字典元素的特点:1)可变的 ( 支持增删改 ); 2)字典是无序 (不支持下标) **
空字典
d1 = {
}
print(type(d1), d1) # <class 'dict'> {}
键不可变
d2 = {
'abc': 100, 12: 200, (10, 20): 300}
print(d2)
d3 = {
'abc': 100, 12: 200, [10, 20]: 300} # 报错! 列表不能作为key(键)列表可变
键是唯一的
d4 = {
'name': '小明', 'name':'小花', 'age': 18}
print(d4) # {'name': '小花', 'age': 18}
值是任何类型的数据
d5 = {
'k1': 90, 'k2': 1.23, 'k3': True, 'k4': 'abc', 'k5': [1, 2], 'k6': {
'a': 10}, 'k7': lambda x: x*2}
print(d5)
字典无序
d6 = {
'name': '张三', 'age': 30}
d7 = {
'age': 30, 'name': '张三'}
print(d6 == d7) # True
02.元素的增删改查
1. 查 - 获取字典的值
1 ) 获取单个值
字典[key] - 获取字典中指定key对应的值;如果key不存在会报错
字典.get(key) - 获取字典中指定key对应的值;如果key不存在不报错,把 None 返回
字典.get(key, 默认值) - 获取字典中指定key对应的值;如果key不存在不报错,把 默认值 返回
dog = {
'name': '旺财', 'sex': '公狗', 'color': '黄色', 'breed': '土狗', 'age': 2}
print(dog['name'], dog['breed']) # 旺财 土狗
print(dog['height']) # KeyError: 'height' 没有
print(dog.get('age'))
print(dog.get('height')) # None
print(dog.get('color', '黑色')) # 黄色
print(dog.get('height', 0)) # 0
2) 遍 历
for 变量 in 字典:
循环体
注意:变量取到的是字典的每个key
dog = {
'name': '旺财', 'sex': '公狗', 'color': '黄色', 'breed': '土狗', 'age': 2}
for x in dog:
print('x:', x, dog[x])
x ==========> name , sex ,co.or, breed, age
x, dog[x] ==> name 旺财, sex 公狗, color 黄色, breed 土狗, age 2
练习:
1)统计班级中不及格学生的人数
2)计算所有学生的平均分
classes = [
{
'name': '小明', 'age': 26, 'score': 90, 'sex': '男'},
{
'name': 'sut1', 'age': 13, 'score': 89, 'sex': '女'},
{
'name': 'stu2', 'age': 22, 'score': 77, 'sex': '女'},
{
'name': 'stu3', 'age': 34, 'score': 56, 'sex': '男'},
{
'name': 'stu4', 'age': 15, 'score'