day 8 字典

编程入门 行业动态 更新时间:2024-10-12 01:23:11

day 8 <a href=https://www.elefans.com/category/jswz/34/1770269.html style=字典"/>

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)查单个 — 获取字典中某一个值(不是键)
  1. 字典[键] — 获取字典中指定键对应的值

    若键不存在则会报错:KeyError

    dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}print(dog['name'])
    print(dog['breed'])
    
  2. 字典.get(键) — 获取字典中指定键对应的值,若键不存在,不会报错而返回None

    字典.get(键,默认值)—获取字典中指定键对应的值,若键不存在,不会报错而返回默认值

    print(dog.get('name'))
    dog1 = {'age': 3, 'color': '金色', 'breed': '边牧'}
    print(dog1.get('name', '无名'))  # 无名
    
  3. 真正的字典 — 生活的角度看字典

# 定义一个变量,保存一个班级的信息
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) 增 — 添加键值对
  1. 字典[键] = 值 ---- 如果键不存在就添加,存在则修改

  2. 字典.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) 删
  1. del 字典[键] — 删除指定键对应的键值对
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}
del dog['color']
print(dog)  # {'name': '多多', 'age': 3, 'breed': '边牧'}
  1. 字典.pop(键) — 取走字典中指定键对应的值,并且返回
dog = {'name': '多多', 'age': 3, 'color': '灰色', 'breed': '边牧'}
result = dog.pop('name')
print(dog)  # {'age': 3, 'color': '灰色', 'breed': '边牧'}
print(result)  # 多多

更多推荐

day 8 字典

本文发布于:2024-03-15 01:12:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737780.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字典   day

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!