字典元组集合

一.字典

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

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

# 字典无序
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})

# 空字典
dict1 = {}

# 键必须是不可变的数据
dict2 = {'a': 10, 20: 30, True: 40, (1, 2): 50}

# 键是唯一的
dict3 = {'a': 10, 'b': 20, 'a': 30}
print(dict3)        # {'a': 30, 'b': 20}

dog = {'name': 'baihua', 'sex': '雄',
       'age': '3', '品种': '牧羊犬',
       '价格': '3000'
}

二.字典的增删改查

# 1.查  -  获取值
# 1)查单个
# 字典[键]    -    获取字典中指定键对应的值
dog = {'name': '白花', 'gender': '公', 'age': 3, 'breed': '土狗'}

# a.字典[键]    -    获取字典中指定键对应的值
print(dog['age'])
print(dog['name'])

# 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 字典:
    循环体(变量依次取到的是键)
"""
for x in dog:
    print(x, dog[x])

# 2.增  -  添加键值对
# 1)字典[键] = 值    -    如果键不存在就添加键值对;如果键存在就修改指定键对应的值
p1 = {'name': '小明', 'age': 18, 'gender': '男'}
print(p1)

# 键不存在的时候添加键值对
p1['height'] = 180
print(p1)

# 键存在的时候修改键值对
p1['age'] = 28
print(p1)

# 2)字典.setdefault(键, 值)    -    添加键值对()

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 i in goods_list:
    i.setdefault('count', 1)
print(goods_list)

# 3.删  -  删除键值对
# 1)del 字典[键]  -  删除指定键对应的键值对
dog = {'name': '旺旺', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog)

del dog['gender']
print(dog)

# 2)字典.pop(键)  -  取出字典中指定键对应的值
dog = {'name': '旺旺', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog)

result = dog.pop('gender')
print(dog, result)

三.生活中的字典

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

    ]
}

print(supermarket['name'])
print(len(supermarket['staffs']))
print([x['name'] for x in supermarket['staffs']])
result = [x['salary'] for x in supermarket['staffs']]
print(sum(result) // len(supermarket['staffs']))
result = [x['age'] for x in supermarket['staffs'] if x['gender'] == '男']
print(sum(result) // len(result))
print([x['name'] for x in supermarket['goods_list']])
result = [x['price'] for x in supermarket['goods_list'] if x['price'] < 5]
print(len(result))
print([x['factory']['name'] for x in supermarket['goods_list']])

四.字典相关操作

# 1.相关操作
# 1)字典不支持+、*和比较大小
# 2)in 和 not in
# 键 in 字典    -    判断字典中是否存在指定的键
dog = {'name': '旺旺', 'gender': '公', 'age': 3, 'breed': '土狗'}
print('name' in dog)
print('旺旺' in dog)

# 2.相关函数
# 1)len(字典) - 统计字典中键值对的个数
print(len(dog))

# 2)dict(数据) - 将指定数据转换成字典
# 要求: a.数据本身是一个大的序列 b.序列中的每个元素必须是有且仅有两个元素的小序列
data1 = ['ab', 'cd', '12']
print(dict(data1))

data2 = [[10, 20], 'ab', ['name', '张三']]
print(dict(data2))

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

# 注意: 将字典转换成列表的时候,是直接将字典的键作为列表的元素
dog = {'name': '旺旺', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(list(dog))

# 3.相关方法: 字典.xxx()
# 1)字典.clear()  -  清空字典
dog.clear()
print(dog)

# 2)字典.copy()  -  赋值字典产生一个一模一样的新字典
dog1 = dog.copy()
print(dog1)

# 3)
# 字典.items()  -  将字典中每一个键值对转换成元组作为新序列中的元素
# 字典.keys()  -  获取字典所有的键,返回一个序列
# 字典.values()  -  获取字典所有的值,返回一个序列
dog = {'name': '旺旺', 'gender': '公', 'age': 3, 'breed': '土狗'}
print(dog.keys())
print(dog.values())
print(dog.items())

五.元组和集合

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值