stu = ['小明', '男', 170, 60, 80, 22, 66, 30]
?用列表的话,数据意义不明。
### 字典写法会更加清晰
student = {'name':'小明', 'gender':'男','height':170, 'weight':60, '数学':80, '语文':22, '英语':66, 'age': 30}
print(student['name'])
? ? ? ?{键1:值1,键2:值2,键3:值3, .....}
dict1 = {} #空字典
print({'a':10, 'b':20} == {'b':20, 'a':10}) #字典是无序的 True
#键必须是不可变类型的数据
dict2 = {10:1 , 'a':2 , True:3 }
#键是唯一的
dict3 = {'a':10 , 'a':20 , 'b':30 }
print(dict3) #{'a': 20, 'b': 30}
? ? ? a.? 字典[ 键 ]? ? ? ? ? ? ----? ?获取字典中指定键对应的值?
dog = { 'name':'土豆', 'age':3, 'gender':'man'}
print(dog['name'])
### 键要不存在 程序会报错 keyerror
? ? ? b. 字典.get(键)? ? ? ? ----? ?获取字典中指定键对应的值
dog = {'name':'土豆', 'age':3, 'gender':'man'}
print(dog.get('name'))
## 如果键不存在,不会报错 默认返回None
? ? ?c. 字典.get(键, 默认值)。---- 获取字典中指定键对应的值,如果键不存在程序不会报错而是返回默认值。
### 如果键不存在,这样书写的话,会输入‘不存在’
dog = {'name':'土豆', 'age':3, 'gender':'man'}
print(dog.get('type','不存在'))
class1 = {
'name': 'SH-python2303',
'position': '1教',
'head_teacher': {'name': '曹老板', 'tel': '110', 'gender': '男'},
'lecturer': {'name': '余婷', 'tel': '120', 'gender': '女'},
'students': [
{'name': 'stu1', 'age': 19, 'gender': '男', 'score': 98, 'link_man': {'name': '张三', 'tel': '19283832'}},
{'name': 'stu2', 'age': 24, 'gender': '女', 'score': 89, 'link_man': {'name': '李四', 'tel': '22349911'}},
{'name': 'stu3', 'age': 25, 'gender': '女', 'score': 54, 'link_man': {'name': '王五', 'tel': '19292811'}},
{'name': 'stu4', 'age': 30, 'gender': '男', 'score': 66, 'link_man': {'name': '赵六', 'tel': '82791262'}},
{'name': 'stu5', 'age': 17, 'gender': '男', 'score': 77, 'link_man': {'name': '小红', 'tel': '771723831'}},
{'name': 'stu6', 'age': 16, 'gender': '女', 'score': 91, 'link_man': {'name': '小明', 'tel': '191023311'}},
{'name': 'stu7', 'age': 25, 'gender': '男', 'score': 59, 'link_man': {'name': '老王', 'tel': '1991888118'}},
]
}
# 1) 获取班级名称
result1 = class1['name']
print(result1)
# 2) 获取班主任的名字和电话
head_teacher = class1['head_teacher']
print(head_teacher['name'],head_teacher['tel'])
# 3) 获取讲师的名字和性别
lecturer = class1['lecturer']
print(lecturer['name'],lecturer['gender'])
# 4) 获取所有学生的名字
all_student = class1['students']
print(all_student)
for stu in all_student:
print(stu['name'])
# 5) 获取所有男生的年龄
result5 = [ i['age'] for i in class1['students'] if i['gender'] =='男' ]
print(result5)
print('**************************************************************************')
# 6) 计算所有女生的平均分
girl_scores = [stu['score'] for stu in class1['students'] if stu['gender']=='女']
print(girl_scores)
print(sum(girl_scores)/len(girl_scores))
print('**************************************************************************')
# 7)获取所有学生的联系人电话号码
tels = [stu['link_man']['tel'] for stu in class1['students']]
print(tels)
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
for i in dog:
print('i:', i,dog[i])
'''
i: name 土豆
i: age 19
i: gender 公
i: type 泰迪
'''
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
# 原字典
print('dog')
#添加元素
dog['color'] = '黄色'
print(dog)
#修改字典的元素
dog['name']='可乐'
print(dog)
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
### 键不存在 新加入
dog.setdefault('color','黄色')
print(dog)
### 键已经存在,不会改变
dog.setdefault('name','可乐')
print(dog)
goods_list = [
??? {'name': '泡面', 'price': 3.5, 'count': 19, 'discount': 0.8},
??? {'name': '矿泉水', 'price': 1.5, 'count': 70},
??? {'name': '面包', 'price': 7.5, 'count': 5, 'discount': 0.5},
??? {'name': '火腿肠', 'price': 2.5, 'count': 9}
]
for item in goods_list:
???? item.setdefault('discount',1)
print(goods_list)
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
del dog['age']
print(dog)
#{'name': '土豆', 'gender': '公', 'type': '泰迪'}
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
print(dog)
result = dog.pop('gender') ## 公
print(dog, result) # {'name': '土豆', 'age': 19, 'type': '泰迪'} 公
? ? ? ? ? ? ?判读字典中是否存在指定的键
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
print(len(dog))
# 4
? ? ? ?对数据的要求:? a. 数据本身必须是一个容器
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? b. 容器中的每个元素必须长度为2 的小容器
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c. 小容器中的第一个元素必须是不可变类型数据
d1 = ['ab', 'cd', 'ef']
d2 = ['ab', range(2)]
# 本身都是容器, 容器每个元素长度都为2 , 且第一个元素都是不可变
? ? ? ? dog.clear()
? ? ? ? dog2 = dog.copy()
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
print(dog.keys()) #dict_keys(['name', 'age', 'gender', 'type'])
print(dog.values()) #dict_values(['土豆', 19, '公', '泰迪'])
print(dog.items()) #dict_items([('name', '土豆'), ('age', 19), ('gender', '公'), ('type', '泰迪')])
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
for key, value in dog.items():
print(key,value)
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
dog.update({'a':10,'b':20})
print(dog)
#{'name': '土豆', 'age': 19, 'gender': '公', 'type': '泰迪', 'a': 10, 'b': 20}
dog = {'name':'土豆', 'age':19, 'gender':'公' ,'type':'泰迪'}
#way1
dog_lst = { v:k for k,v in dog.items() }
print(dog_lst)
#way2
dict1 = {dog[x]:x for x in dog}
print('dict1:', dict1)
t10 = 1,2,3,4*10
print(type(t10))
#<class 'tuple'>
movie = ('三傻大闹宝莱坞', '触不可及', '教父','变行金刚','盗梦空间','奥本海默')
print(movie[1],movie[-1],movie[-2])
print(movie[1:-1])
print(movie[0:-2:2])
print('**************************************************************************')
for i in movie:
print(i)
print('**************************************************************************')
for index in range(len(movie)):
print(index,movie[index])
????????
? ? ? ? 让变量的个数和元组/列表中元素的个数保持一致
point = (10,20,30)
x,y,z = point
print(x,y,z)
a,b,c = 100,200,300
d1 = {'a':10, 'b':20,'c':30}
for k,v in d1.items():
print(k,v)
lst = [(10,20,30),('a','b','c'),('abc',100,200)]
for x1,x2,x3 in lst:
print(x1,x2,x3)
在其中一个变量前面加*。取得时候先让不带*的变量去获取元素,剩下的全部给带*的变量
point =(10,20,30,40,50)
*x,y,z =point
print(y)
'''
y 是40, z是50. 其余的全部给x
'''
point =(10,20,30,40,50)
x,*y,z =point
'''
x = 10, z =50 , 其余给y
'''