字典、元祖
回顾:
-
列表比较运算(两个列表中第一对不相等元素大小)
-
列表相关函数:sum/min、max、sorted() — 产生新列表 、len 、list sort
-
列表的相关方法 :列表.xxx() 。列表.clear() / 列表.copy() / 列表.count()/ append()
/pop() /remove()/insert() …。、
-
列表推导式:[表达式 for 变量 in 序列]
-
[表达式 for 变量 in 序列 if 条件语句]
ls = [] if ls: #判断列表是否为空 print("+++=") else: print("_____")
补充:
单目运算符: not
双目运算符:+ — * / < > …
三目运算符: 表达式2 if 表达式1 else 表达式3
age = 18
result = "成年" if age>=18 else "未成年"
print(result)
C语言三目运算符:表达式1?表达式2:表达式3 ——判断表达式1 是否为真,如果为真运算结果是表达式2 的值,否则就是表达式3的值
字典
- 字典和列表的选择:如果同时保存的多个意义相同就使用列表; 如果同时保存多个意义不同就使用字典(保存一个学生的信息和各科的成绩)
- 什么是字典:字典是容器型数据类型,将{}作为容器的标志,里面多个键值对用逗号隔开 如:student = {“姓名”:“小小”,“age”:10,“性别”:“男”}
- 字典是可变的(支持增删改)print({‘a’:1,‘b’:2,‘c’:3} == {‘b’:2,‘c’:3,‘a’:1}) #True
- 字典是无序的(不支持下标操作)
- 元素的要求:键值对。对键的要求:键必须是不可变类型数据(一般使用字符串);键是唯一的。对值的要求:任何数据类型
查
-
查单个:字典[键] —— 获取指定键对应的值。如果键不存在就会报错
dog = {"name":"旺财","age":3,'bread':"土狗","gender":"母"} print(dog["name"],dog['gender'])
-
字典.get(键) ——获取字典中指定键对应的值。键不存在不会报错,并且返回空
字典.get(键,默认值) —— 获取字典中指定键对应的值。键不存在不会报错,就会返回默认值
dog = {"name":"旺财","age":3,'bread':"土狗","gender":"母"} print(dog.get('name'),dog.get('age')) dog = {'name':'旺财','age':1,'bread':"二哈",'gender':"母狗"} print(dog.get("name"),dog.get("w","无"))
"""
# 1)打印班级的名字和教室
print(class1['class_name'],class1['address'])
# 2) 打印班级讲师的名字和年龄
print(class1['lecturer']['name'],class1['lecturer']['age'])
# 3) 打印班主任的电话
print(class1["class_teacher"]["tel"])
# 4) 打印所有的学生的名字
#方法一
all_name = class1["students"]
ls = [x["name"] for x in all_name]
print(ls)
#方法二
all_name = class1["students"]
# for x in all_name:
# print(x["name"])
# 5)计算所有学生的平均年龄
average = 0
total_age = 0
count = 0
ls_name = class1["students"]
for x in ls_name:
count+=1
total_age+=x["age"]
average =total_age / count
print(average)
#方法二
print('平均年龄:',sum([x['age']for x in class1['students']])/len(class1['students']))
# 6) 打印所有学生的联系人的名字
ls_name = class1["students"]
for x in ls_name:
print(x["contacts"]["name"])
# 7)打印所有联系人电话号码尾号是2的学生的名字
ls_name = class1["students"]
for x in ls_name:
if (x["contacts"]["tel"][-1]) == '2':
print(x["name"])
"""
class1 = {
'class_name': 'Python2204',
'address': '15教',
'lecturer': {'name': '余婷', 'age': 18, 'qq': '726550822', 'gender': '女'},
'class_teacher': {'name': '静静', 'tel': '110'},
'students': [
{'name': 'stu1', 'age': 21, 'major': '会计', 'tel': '120', 'contacts': {'name': '张三', 'tel': '162723'}},
{'name': 'stu2', 'age': 30, 'major': '电子', 'tel': '219223', 'contacts': {'name': '小明', 'tel': '281912'}},
{'name': 'stu3', 'age': 19, 'major': '旅游管理', 'tel': '123233', 'contacts': {'name': '小花', 'tel': '886552'}},
{'name': 'stu4', 'age': 25, 'major': '通信', 'tel': '4444221', 'contacts': {'name': '李四', 'tel': '22342345'}},
{'name': 'stu5', 'age': 25, 'major': '机械', 'tel': '223111', 'contacts': {'name': '王五', 'tel': '555632'}},
{'name': 'stu6', 'age': 23, 'major': '数学', 'tel': '234234', 'contacts': {'name': '赵六', 'tel': '96533'}}
]
}
-
遍历字典:for 变量 in 字典:
循环体(变量获取到的是键)
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"} for i in dog: print(i,dog[i]) name 旺财 age 1 bread 二哈 gender 母狗
修改
- 字典[键] = 新值 ——将字典中指定键对应的值修改成指定新的值
- 字典.setdefault(键,值) ——键存在会保留原来的值(不会被修改)
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
dog['name'] = '二哈'
print(dog)
dog.setdefault('weight',15)
print(dog)
增加
- 字典[键] = 值 —— 如果键不存在,就在键值对中添加键值对。如果键存在就是修改
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
dog['girl'] = '小美'
print(dog)
dog.setdefault('weight',15)
print(dog)
删除
字典[键] ——删除字典中键值对
字典.pop(键) —— 取出指定对应的值
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
del dog['gender'] #删除gender 键值对
a=dog.pop('age') # 拿走的是值 1
print(dog)
print(a)
print(dog)
{'name': '旺财', 'bread': '二哈'}
1
{'name': '旺财', 'bread': '二哈'}
相关操作
字典不支持 + * < > <= >=
支持 in 和 not in 判断字典中指定的键是否存在
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母"}
print(10 in dog) # False
print('name' in dog) # True
相关函数:len() dict
len(字典) —— 获取键值对的数量
dict(数据) ——将指定的数据转换成字典。对数据的要求:数据本身要是一个序列;序列中的元素必须是有且只有两个元素的小序列 ;小序列的第一个元素必须是不可变类型数据。如:[‘ab’,[10,20]]
ls =['ab',[10,20]]
print(dict(ls))
{'a': 'b', 10: 20}
注意:字典转换成列表的时候,将字典所有键作为列表的元素(值则丢弃)
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母"}
print(list(dog))
['name', 'age', 'bread', 'gender']
字典相关方法
- 字典.clear() —— 清空字典
- 字典.copy —— 拷贝
- 字典.keys() —— 获取所有的键
- 字典.values() —— 获取所有的值
- 字典.items() —— 将字典转换成一个序列,并将每一个键值对转换成一个元祖
- 字典1.update(字典2) ——将字典2中所有键值对添加到字典1