字典"/>
day 8 字典
day 8 字典
1. 补充 三目运算符
1) C语言三目运算符
条件语句?表达式1:表达式2 — 判断条件语句是否为真,真则整个运算结果为表达式1的结果 ,否则为表达式2的结果
2) Python 三目运算符
表达式1 if 条件语句 else 表达式2 — 先判断条件是否成立,成立则整个运算结果为表达式1的值,否则为表达式2的值
# 应用 --- 判断是否成年
age = 26
result = '成年' if age >= 18 else '未成年'
print(result)# 补充:利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2
# 三目运算符与列表推导式相结合
nums = [23, 4, 67, 88, 90, 21]
result = [i*2 if i % 2 != 0 else i // 2 for i in nums]
# |-----> 三目运算符<----------| |---加上整个为列表推导式---|
print(result)
2. 认识字典(dict)
如果需要同时保存多个意义相同的数据则使用列表
如果需要同时保存多个意义不同的数据,就使用字典
-
字典是容器型数据类型,将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素)
{键1:值1, 键2:值2, 键3:值3……} -
字典是可变的(指的是值可变) 支持增删改
字典是无序的 :顺序不影响结果;不支持下标操作 -
字典的元素:由键和值组成,其中值是真正需要保存的数据,键是用来对值进行区分和说明的
键 — 只能是不可变类型的数据(故字典和列表不能作为键),数字、字符串、布尔都是不可变的
键是唯一的:同一个键在同一个字典中只能出现一次
值 — 没有要求(任何类型的数据都可以作为字典的值)1) 空字典
dict1 = {}
print(dict1) # {}
2)键是不可变类型的数据
元组也是不可变的
dict2 = {'a': 10, 10: 20, True: 30, (10, 20): 40}
print(dict2)
3)字典是无序的
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True
4)键是唯一的
dict4 = {'a': 10, 'a': 20, True: 30, (10, 20): 40}
print(dict4)
# 最终只会保存重复键的最后面那个值
3. 字典 查
1)查单个 — 获取字典中某一个值(不是键)
-
字典[键] — 获取字典中指定键对应的值
若键不存在则会报错:KeyError
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}print(dog['name']) print(dog['breed'])
-
字典.get(键) — 获取字典中指定键对应的值,若键不存在,不会报错而返回None
字典.get(键,默认值)—获取字典中指定键对应的值,若键不存在,不会报错而返回默认值
print(dog.get('name')) dog1 = {'age': 3, 'color': '金色', 'breed': '边牧'} print(dog1.get('name', '无名')) # 无名
-
真正的字典 — 生活的角度看字典
# 定义一个变量,保存一个班级的信息
class1 = {'name': 'python2301','location': '21教','lecturer': {'name': '余婷','age': 18,'gender': '女','tel': '13678192302'},'headTeacher': {'name': '萍姐','age': 18,'tel': '110'},'all_student': [{'name': 'stu1', 'age': 18, 'tel': '119', '专业': '电子商务', 'score': 78,'linkman': {'name': '张三', 'tel': '82223111'}},{'name': 'stu2', 'age': 23, 'tel': '8293', '专业': '计算机软件', 'score': 100,'linkman': {'name': '李四', 'tel': '829933'}},{'name': 'stu3', 'age': 30, 'tel': '918111', '专业': '数学', 'score': 96,'linkman': {'name': '小明', 'tel': '11929203'}},{'name': 'stu4', 'age': 16, 'tel': '827222', '专业': '数学', 'score': 99,'linkman': {'name': '王五', 'tel': '8628101'}}]}# 练习
# 1) 获取班级名字
print(class1['name'])
# 2)获取班级的位置
print(class1['location'])
# 3)获取讲师的名字
print(class1['lecturer']['name'])
# 4)获取班主任的电话
print(class1['headTeacher']['tel'])
# 5)获取第一个学生的专业
print(class1['all_student'][0]['专业'])
# 6)获取所有学生的名字
# 法1:
# for i in class1['all_student']:
# print(i['name'])# 法2:
result1 = [i['name'] for i in class1['all_student']]
print(result1) # ['stu1', 'stu2', 'stu3', 'stu4']# 7)获取所有学生的联系人名字
# 法1:
# for i in class1['all_student']:
# print(i['linkman']['name'])# 法2:
result2 = [i['linkman']['name'] for i in class1['all_student']]
print(result2) # ['张三', '李四', '小明', '王五']# 8)获取未成年学生的联系人电话
# 法1:
# for i in class1['all_student']:
# if i['age'] < 18:
# print(i['linkman']['tel'])# 法2:
result3 = [i['linkman']['tel'] for i in class1['all_student'] if i['age'] < 18]
print(result3) # ['8628101']
2) 遍历
for 变量 in 字典:
循环体
变量依次获取的是字典的键,而不是值
for key in dog:print('key:', key, 'value:', dog[key])"""
key: name value: 多多
key: age value: 3
key: color value: 灰色
key: breed value: 边牧
"""
4. 字典 增删改
1) 增 — 添加键值对
-
字典[键] = 值 ---- 如果键不存在就添加,存在则修改
-
字典.setdefault(键,值) — 在字典中添加键值对(如果键不存在则添加,存在则不作为)
# 案例:计算总价格 good_list = [{'name': '火腿肠', 'price': 1.5, 'count': 15},{'name': '方便面', 'price': 3.5, 'count': 40, 'discount': 0.9},{'name': '矿泉水', 'price': 1.8, 'count': 20},{'name': '面包', 'price': 2.5, 'count': 24, 'discount': 0.8} ] # 每种商品的数据结构并不统一 # 法1:用get 取不统一的部分 sum1 = 0 for i in good_list:a = i['price'] * i['count'] * i.get('discount', 1)sum1 += a print(sum1)# 法2:先让数据结构变得统一 sum2 = 0 for i in good_list:i.setdefault('discount', 1) print(good_list) for i in good_list:a = i['price']*i['count']*i['discount']sum2 += a print(sum2)
2)改
字典[键] = 值 — 如果键存在则修改
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧', 'weight': 20}
dog['name'] = '旺财'
print(dog)
# {'name': '旺财', 'age': 3, 'color': '灰色', 'breed': '边牧', 'weight': 20}
3) 删
- del 字典[键] — 删除指定键对应的键值对
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}
del dog['color']
print(dog) # {'name': '多多', 'age': 3, 'breed': '边牧'}
- 字典.pop(键) — 取走字典中指定键对应的值,并且返回
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}
result = dog.pop('name')
print(dog) # {'age': 3, 'color': '灰色', 'breed': '边牧'}
print(result) # 多多
更多推荐
day 8 字典
发布评论