day08-字典元组集合

day08-字典元组集合

@TOC

字典

1.字典的作用:

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

字典和列表的选择问题:
1.同时保存多个意义不同的数据用字典(字典保存数据的时候可以通过不同的键来对数据进行区分和说明)
2.同时保存多个意义相同的数据用列表

2.什么是字典

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

2.字典的增删改查

1.查

a.查单个

字典[键]

若不存在则会报错

字典.get(获取字典中指定键对应的值)

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

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

b.遍历

for 变量 in 字典
循环体(变量依次取到的是键)

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

2.增

字典[键]=值 - 如果键不存在就添加键值对,如果键存在就修改指定键对应的值

键不在的时候添加键值对,键在的时候修改键值对

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

字典.setdefault(键,值) - 添加键值对(键不存在就添加,存在的时候不会修改)

# 给商品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.删

del 字典[键] - 删除指定键的键值对
字典.pop(键) - 取出指定键的键值对

3.生活中的字典

定义一个变量保存超市中的信息

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.获取员工数量
total = 0
for staffs in supermarket:
    total += 1
print(total)
# 3.打印所有员工的名字
for x in supermarket['staffs']:
    print(x['name'])
# 4. 计算所有员工的平均薪资
average_sal = 0
tot_sal = 0
for x in supermarket['staffs']:
    tot_sal+= x['salary']
average_sal = tot_sal/total
print(average_sal)
# 5. 计算所有男职员的平均年龄
total_age = 0
tot = 0
for x in supermarket['staffs']:
    if x['gender'] == '男':
        total_age += x['age']
        tot += 1
print(total_age/tot)
# 6.打印所有商品的名称
for x in supermarket['goods_list']:
    print(x['name'])
# 7.统计单价低于5块钱的商品的总量
total = 0
for x in supermarket['goods_list']:
    if x['price']<5:
        total+=1
print(total)

# 8.打印所有商品的商家名称
for x in supermarket['goods_list']:
    a = x['factory']
    print(a['name'])

4.字典相关操作

a.相关操作

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

2.in和 not in

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

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

b.相关操作

len(字典) - 统计字典中键值对的个数

dict(数据) - 将指定数据转换成字典 - 要求:a.数据本身是一个大的序列 b.数列中的每个元素必须是有且只有两个元素的小序列

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

c.相关方法

# a.clear
# b.copy
# c.item,keys,values
# 字典.items()    -   将字典中每一个键值对转换成元组作为新序列中的元素
# 字典.keys()     -   获取字典所有的键,返回一个序列
# 字典.values()   -   获取字典所有的值,返回一个序列
# 字典.update()   -   将第二个序列中的键值对加入到第一个字典中

5.元组和集合

元组

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

集合

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值