重制版 day 08字典和元组

字典和元组

三目运算符

语法:

表达式2 if 表达式1 else 表达式3 --判断表达式1是否成立,如果成立,结果为表达式2,反之结果为表达式3

字典

字典(dict)

1)字典是容器型数据类型,将{}作为容器的标志,里面多个键值对用逗号隔开:{键1:值1,键2:值2…}

2)字典是可变的(支持增删改);字典是无序的(不支持下标操作)

3)元素的要求:字典的元素是键值对

​ 键的要求:a.键必须是不可变的类型数据(一般使用字符串) b.键是唯一的

​ 值的要求:没有要求

字典和列表的选择:

如果同时保存的多个数据意义相同(都是描述同一种类数据)时,使用列表

如果同时保存的多个数据的意义不同,使用字典

字典的查

查单个

查单个-获取字典某一个键对应的值

1)字典[键]-获取字典中指定键的对应值,如果键不存在会报错

2)字典.get(键)–获取字典中指定键的对应值,如果键不存在,返回None

​ 字典.get(键,默认值)-获取字典中指定键的对应值,如果键不存在,返回默认值

dog={'name':'旺财','age':3,'breed':'土狗','gender':'母狗'}
print(dog['name'],dog['age'],type(dog['name']),type(dog['age']))
print(dog.get('breed'))
# print(dog['color'])  # 报错
print(dog.get('color'))  # None
print(dog.get('color','白色'))  # 白色

实际应用:

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'}}
    ]
}

# 1)打印班级的名字和教室
print(class1['class_name'],class1['address'])  # Python2204 15教
# 2) 打印班级讲师的名字和年龄
print(class1['lecturer']['name'],class1['lecturer']['age']) # 婷婷 18
# 3) 打印班主任的电话
print(class1['class_teacher']['tel'])  # 110
# 4) 打印所有的学生的名字
# 方法1
students=class1['students']
for i in students:
    print(i['name'])
# 方法2
result=[i['name']for i in class1['students']]
print(result)
# ['stu1', 'stu2', 'stu3', 'stu4', 'stu5', 'stu6']
# 5)计算所有学生的平均年龄
# 方法1:
all_student=class1['students']
total_age=stu_count=0
for stu in all_student:
    total_age+=stu['age']
    stu_count+=1
print('平均年龄:',total_age/stu_count)
# 平均年龄: 23.833333333333332
# 方法2:
age=[i['age']for i in class1['students']]
print(int(sum(age)/len(age)))
# 6) 打印所有学生的联系人的名字
# 方法1
result=[i['contacts']['name']for i in class1['students']]
print(result)
print('-------------------------------分割线----------------------------------------')
# 方法2
all_student=class1['students']
for i in all_student:
    print(i['contacts']['name'])
#    ['张三', '小明', '小花', '李四', '王五', '赵六']
# 7)打印所有联系人电话号码尾号是2的学生的名字
# 方法1
result=[i['name'] for i in class1['students'] if int(i['contacts']['tel'])%10 ==2]
result1=[i['name'] for i in class1['students'] if (i['contacts']['tel'])[-1] =='2']
print(result)
print('-------------------------------分割线----------------------------------------')
# 方法2
for stu in class1['students']:
    if stu['contacts']['tel'][-1]=='2':
        print(stu['name'])
# ['stu2', 'stu3', 'stu5']
# 利用列表表达式的效率比循环低

如果字典套字典,可以直接利用字典[键][键]直接求值

如果字典套列表再套字典,可以利用字典[键][键]再利用循环求值

遍历

语法:

方法1:

for 变量 in 字典:

​ 循环体(变量获取到的是字典的键)

方法2:

for 键,值 in 字典.item():

​ 循环体

dog={'name':'旺财','age':3,'breed':'土狗','gender':'母狗'}
for i in dog:
    print('i',i,dog[i])
'''
运行结果:
i name 旺财
i age 3
i breed 土狗
i gender 母狗
'''

for key,value in dog.items():
    print(key,value)
'''
运行结果:
name 旺财
age 3
breed 土狗
gender 母狗
'''

字典的增删改

1)改-修改某个键对应的值

字典[键]=新值 -将字典中指定键的对应的值,修改成新值

2)增 -增加键值对

字典.[键]=值 --如果键不存在,添加键值对,如果键存在,修改值

字典.setdefault(键,值) --如果键不存在,添加键值对,如果键存在,不会修改值

3)删-删除键值对

del 字典[键]-删除指定键值对

字典.pop(键) --取出指定键对应的值,当值被取出,键也消失

字典的相关操作

1.字典只支持==比较,结果为True/False

字典支持 in ,not in -判断字典中是否含有指定键

键 in 字典

键 not in 字典

dict1={'a':10,'b':20,'c':20}
print(10 in dict1)  # False
print('a' in dict1) # True

2.相关函数:len,dict,其他求和排序没有实际应用的意义

len(字典)–获取字典中键值对的数量

dict(数据)-将指定的数据类型转换字典

转换要求:

a.数据本身是一个序列

b.序列中的元素必须是有两个元素的小序列

c.小序列的第一个元素必须是不可变的数据类型

注意:字典换列表时,字典所有键作为列表的元素

3.相关方法:字典.xxx()

1)字典.clear() -清空字典

2)字典.copy()-复制字典,产生相同的字典

3)字典.keys() -获取字典所有的键,返回一个序列

​ 字典.values() -获取字典所有值,返回一个序列

​ 字典.items() -将字典转换成一个序列,每一个键值对转化成一个元组

4)字典1.update(字典2) -将字典2的键值对添加的字典1中

元组

元组是不可变的列表,列表中和可变性无关的内容元组全部支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值