day8-字典总结

本文详细介绍了Python字典的使用,包括字典的作用、特点、增删查改操作,以及在实际生活中的应用,如保存学生和超市信息。此外,还探讨了字典与其他数据结构如元组和集合的区别和联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典

1. 字典的作用

定义一个变量保存一个学生的信息

stu1 = ['小明', '男', 25, 170, 175, 90, '110', '120']
print(stu1[0])

stu2 = {
    'name': '小明',
    'gender': '男',
    'age': 25,
    'height': 170,
    'weight': 175,
    'score': 90,
    'tel': '110',
    '联系人电话': '120'
}
print(stu2['name'])

字典和列表的选择问题:

1)同时保存多个意义不同的数据用字典(字典保存数据的时候可以通过不同的键来对数据进行区分和说明)

2)同时保存多个意义相同的数据用列表

2.什么是字典(dict)

1)字典是容器型数据类型(能同时保存多个数据);将{}作为容器的标志,里面多个键值对用逗号隔开:{键1:值1, 键2:值2, 键3:值3,…}
2)字典是可变的;字典是无序的(不支持下标操作)
3)字典的元素是键值对
键:键必须是不可变类型的数据(常见不可变类型的数据:字符串、元组、数字、布尔等);键是唯一的
值:任何类型的数据都可以作为字典的值

字典无序

print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})         # True

空字典

dict1 = {}

键必须是不可变的数据

dict2 = {'a': 10, 20: 30, True: 40, (1, 2): 50}
print(dict2)

键是唯一的

dict3 = {'a': 10, 'b': 20, 'a': 30}
print(dict3)       # {'a': 30, 'b': 20}

字典增删查改

1.查 - 获取值

1)查单个

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}

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

print(dog['age'])
print(dog['name'])

print(dog['color'])       # 报错!KeyError: 'color'

b.

字典.get(键) - 获取字典中指定键对应的值,如果键不存在不会报错并且返回None

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

print(dog.get('age'))
print(dog.get('name'))
print(dog.get('color'))

print(dog.get('age', 1))
print(dog.get('name', '小狗'))
print(dog.get('color', '白色'))

2)遍历字典

for 变量 in 字典:
    循环体(变量依次取到的是键)
dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
for x in dog:
    print(x, dog[x])

2.增 - 添加键值对

1)字典[键] = 值

如果键不存在就添加键值对;如果键存在就修改指定键对应的值

p1 = {'name': '小明', 'age': 18, 'gender': '男'}
print(p1)       # {'name': '小明', 'age': 18, 'gender': '男'}

键不存在的时候添加键值对

p1['height'] = 180
print(p1)       # {'name': '小明', 'age': 18, 'gender': '男', 'height': 180}

键存在的时候修改键值对

p1['age'] = 28
print(p1)       # {'name': '小明', 'age': 28, 'gender': '男', 'height': 180}

2)字典.setdefault(键, 值)

添加键值对(键不存在就添加,存在的时候不会修改)

p1 = {'name': '小明', 'age': 18, 'gender': '男'}
print(p1)       # {'name': '小明', 'age': 18, 'gender': '男'}

p1.setdefault('height', 180)
print(p1)           # {'name': '小明', 'age': 18, 'gender': '男', 'height': 180}

p1.setdefault('age', 28)
print(p1)       # {'name': '小明', 'age': 18, 'gender': '男', 'height': 180}

练习:给商品goods_list中所有没有折扣的商品添加折扣对应的键值对,并且折扣值是1

goods_list = [
    {'name': '泡面', 'price': 3.5, 'count': 50, 'discount': 0.88},
    {'name': '矿泉水', 'price': 2, 'count': 129},
    {'name': '火腿肠', 'price': 3, 'count': 32},
    {'name': '面包', 'price': 5.5, 'count': 6, 'discount': 0.5},
    {'name': '牛奶', 'price': 6, 'count': 21}
]

for x in goods_list:
    x.setdefault('discount', 1)

print(goods_list)

3.删 - 删除键值对

1)del 字典[键]

删除指定键对应的键值对

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog)      # {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}

del dog['gender']
print(dog)      # {'name': '财财', 'age': 3, 'breed': '土狗'}

2)字典.pop(键)

取出字典中指定键对应的值

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog)      # {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}

result = dog.pop('gender')
print(dog, result)      # {'name': '财财', 'age': 3, 'breed': '土狗'} 公

生活中的字典

练习:定义一个变量保存一个超市的信息

supermarket = {
    'name': '永辉超市',
    'address': '肖家河大厦一楼',
    'staffs': [
        {'name': '张三', 'station': '销售', 'salary': 4000, 'gender': '男', 'age': 32},
        {'name': '李四', 'station': '收营员', 'salary': 3000, 'gender': '女', 'age': 25},
        {'name': '小明', 'station': '清洁工', 'salary': 3500, 'gender': '男', 'age': 20},
        {'name': '小花', 'station': '收营员', 'salary': 3800, 'gender': '女', 'age': 26}
    ],
    'goods_list': [
        {'name': '火腿肠', 'price': 2.5, 'count': 109, 'factory': {'name': '双汇', 'tel': '2561712'}},
        {'name': '泡面', 'price': 3.5, 'count': 45, 'factory': {'name': '康师傅', 'tel': '828293'}},
        {'name': '矿泉水', 'price': 2.0, 'count': 231, 'factory': {'name': '康师傅', 'tel': '828293'}},
        {'name': '面包', 'price': 5.5, 'count': 10, 'factory': {'name': '桃李', 'tel': '2819122'}},
        {'name': '酱油', 'price': 7.0, 'count': 21, 'factory': {'name': '海天', 'tel': '928181'}},
        {'name': '餐巾纸', 'price': 3.0, 'count': 283, 'factory': {'name': '心相印', 'tel': '92101'}},
        {'name': '牛奶', 'price': 60.0, 'count': 34, 'factory': {'name': '蒙牛', 'tel': '981012'}}
    ]
}

1.获取超市名称

print(supermarket['name'])

2.获取员工的数量

all_staff = supermarket['staffs']
print(len(all_staff))

3.打印所有员工的名字

names = [x['name'] for x in all_staff]
print(names)

4.计算所有员工的平均薪资

print(sum([x['salary'] for x in all_staff]) / len(all_staff))

5.计算所有男职员的平均年龄

all_man_age = [x['age'] for x in all_staff if x['gender'] == '男']
print(sum(all_man_age) / len(all_man_age))

6.打印所有商品的名称

all_goods = supermarket['goods_list']
goods_name = [x['name'] for x in all_goods]
print(goods_name)

7.统计单价低于5块钱的商品的总量

count = 0
for x in all_goods:
    if x['price'] < 5:
        count += 1
print(count)

8.打印所有商品的商家名称

result = [x['factory']['name'] for x in all_goods]
print(result)

字典的相关操作

1. 相关操作

1)字典不支持+、*和比较大小

2)in 和 not in

键 in 字典 - 判断字典中是否存在指定的键

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
print('name' in dog)        # True
print('财财' in dog)          # False

2.相关函数

1)len(字典)

统计字典中键值对的个数

print(len(dog))

2)dict(数据)

将指定数据转换成字典

要求:a.数据本身是一个大的序列 b.序列中的每个元素必须是有且只有两个元素的小序列

data1 = ['ab', 'cd', '12']
print(dict(data1))      # {'a': 'b', 'c': 'd', '1': '2'}

data2 = [[10, 20], 'ab', ['name', '张三']]
print(dict(data2))      # {10: 20, 'a': 'b', 'name': '张三'}

data3 = [(10, 20), ('abc', 123), (3, 4), ('age', 45)]
print(dict(data3))

注意:将字典转换成列表的时候,是直接将字典的键作为列表的元素

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(list(dog))    # ['name', 'gender', 'age', 'breed']

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

1)字典.clear()

清空字典

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
dog.clear()
print(dog)      # {}

2)字典.copy()

赋值字典产生一个一模一样的新字典

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
dog1 = dog.copy()
print(dog1)

dog['name'] = '旺财'
print(dog)
print(dog1)

3)字典.items()

将字典中每一个键值对转换成元组作为新序列中的元素

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

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

dog = {'name': '财财', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog.keys())       # dict_keys(['name', 'gender', 'age', 'breed'])
print(dog.values())     # dict_values(['财财', '公', 3, '土狗'])
print(dog.items())      # dict_items([('name', '财财'), ('gender', '公'), ('age', 3), ('breed', '土狗')])

4)字典1.update(字典2)

将字典2中所有的键值对都添加到字典1中

dict1 = {'a': 10, 'b': 20}
dict2 = {'x': 100, 'y': 200}
dict1.update(dict2)
print(dict1)        # {'a': 10, 'b': 20, 'x': 100, 'y': 200}

元组和集合

1. 元组(tuple)

  • 容器型数据类型; 将()作为容器的标志,里面多个元素用逗号隔开:(数据1, 数据2, 数据3, …)
  • 不可变的;有序的 (元组就是不可变的列表)
  • 任何类型的数据都可以作为元组的元素
x = (10, 20)
print(x, type(x))

nums = (19, 23, 45, 67, 34)
print(nums[0], nums[-1])
print(nums[1:-1:2])     # (23, 67)

t1 = (10, 'abc', True, [10, 20])

2.集合(set)

  • 容器型数据类型;将{}作为容器的标志,里面多个元素用逗号隔开: {数据1, 数据2, 数据3,…}
  • 可变的;无序的
    集合对元素的要求和字典对键的要求
x = {10, 20}
print(x, type(x))

print({10, 20, 30} == {30, 10, 20})     # True

s1 = {10, 'abc', True, (1, 2), 10, 'abc', 10}
print(s1)       # {True, 10, (1, 2), 'abc'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王薇蕴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值