新开课day7总结

字典

  1. 字典的作用

看案例:

#列表
stu = ['小明', 32, '电子信息', 170, 80, 90]
print(stu[1])

#字典
stu = {
    'name': '小明',
    'age': 32,
    '专业': '电子信息',
    'height': 170,
    'weight': 80,
    'score': 90
}
print(stu['age'])   #32
  1. 字典和列表的选择

    如果要保存多个意义不同的数据,就使用字典;要保存多个意义相同的数据就用列表

  2. 什么是字典(dict)

    • 字典是系统类型,属于容器型数据类型(序列);
    • 将{}作为容器的标志,里面多个键值对(元素)用逗号隔开: {键1:值1, 键2:值2, 键3:值3, …}
    • 字典是可变(支持增删改);字典是无序(不支持下标操作;顺序不影响结果)

键:键必须是不可变类型的数据(数字、字符串、布尔、空值、元组); 键唯一(同一个字典中同一个键只能出现一次)

值:没有要求(任何类型的数据)

看案例:

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

# 键不可变
dict1 = {10: 20, 'a': 30, (10, 20): 40}
# dict2 = {10: 20, 'a': 30, [10, 20]: 40}       # 报错

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

# 空字典
dict4 = {}

字典的查操作

字典存储数据真正想要保存的是值,键只是用来对值进行区分和说明的(相当于列表中元素的下标)

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

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}

print(dog['type'])#土狗
print(dog['name'])#旺财

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

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}

print(dog.get('price'))#30000
print(dog.get('color'))#黄色
print(dog.get('weight'))#None

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

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}

print(dog.get('color'))#黄色
print(dog.get('weight',10))#10
print(dog.get('sex','公'))#公

4)遍历字典: 一个一个的获取字典所有的值

"""
方法1:
for 变量 in 字典:
    循环体(变量获取到的是字典的键)
    
方法2:
for 变量1,变量2 in 字典.items():
    循环体(变量1依次取到的是所有的键,变量2依次取到的是所有的值)
"""

看案例:

#方法一:获取键:值
dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
for x in dog:
    print(x, dog[x])

#方法二:获取键:值
for key, value in dog.items():
    print(key, value)

字典的增、改

1)字典[键] = 值 :如果键不存在就添加键值对;如果键存在就修改指定键对应的值

案例:

有相同的键则修改,无相同的键则增加

stu = {'name': '小明', 'age': 18, 'height': 177}
print(stu)

stu['weight'] = 70
print(stu)      # {'name': '小明', 'age': 18, 'height': 177, 'weight': 70}

stu['age'] = 28
print(stu)      # {'name': '小明', 'age': 28, 'height': 177, 'weight': 70}

2)字典.setdefault(键, 值):添加键值对(只会在键不存在的时候实现添加的功能,键存在无作为)

stu = {'name': '小明', 'age': 18, 'height': 177}

stu.setdefault('weight', 80)
print(stu)

stu.setdefault('age', 30)
print(stu)

字典的删

1)del 字典[键] - 删除指定键对应的键值对

案例:

stu = {'name': '小明', 'age': 18, 'height': 177, 'gender': '男'}

del stu['height']
print(stu)      # {'name': '小明', 'age': 18, 'gender': '男'}

2)字典.pop(键) - 取出字典中指定键对应值并且返回

stu = {'name': '小明', 'age': 18, 'height': 177, 'gender': '男'}

result = stu.pop('gender')
print(stu, result)      # {'name': '小明', 'age': 18, 'height': 177} 男

字典相关操作和函数

1、键 in 字典、键 not in 字典

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
print(3 in dog)     # False
print('name' in dog)        # True

2、len

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
print(len(dog))#5

3、dict:将指定数据转换成字典

要求:1、数据本身是一个大序列
2、大序列中的每个元素是有且只有两个元素的小序列,并且小序列中的第一个元素是不可变类型的数据
案例:

data1 = ['ab', [10, 20], '10']
print(dict(data1))      # {'a': 'b', 10: 20, '1': '0'}

data2 = [('age', 20), ('name', '张三'), ('gender', '男')]
print(dict(data2))      # {'age': 20, 'name': '张三', 'gender': '男'}

字典相关方法

1.字典.clear() :清空字典

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
dog.clear()
print(dog)#{}

2.字典.copy():复制字典产生一个一模一样的新字典,并且将新的字典返回

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
dog1 = dog.copy()
print(dog1) #返回和dog一模一样的字典
  • 直接赋值和拷贝的区别

    a = [10, 20, 30, 40]
    b = a      # 直接赋值赋的是地址
    print(b)    #[10, 20, 30, 40]
    
    c = a.copy()        # 拷贝是赋值原数据产生一个一模一样的新数据,并且将新的数据的地址返回
    print(c)      #[10, 20, 30, 40]
    
    a.append(100)
    print('a:', a)#a: [10, 20, 30, 40, 100]
    print('b:', b)#b: [10, 20, 30, 40, 100]
    print('c:', c)#c: [10, 20, 30, 40]
    
  • 浅拷贝和深拷贝

浅拷贝:列表.copy()、字典.copy()、列表[:]、copy(可变数据) (只拷贝对象本身,对象中的子对象不拷贝)

深拷贝:deepcopy(可变数据),(既拷贝对象本身,也会拷贝对象中的子对象)

看案例:

list1 = [10, [100, 200], 20, 30]
list2 = copy(list1)
list3 = deepcopy(list1)
print('修改前:')
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)

#对列表修改
list1.append(100)
print('修改方式1后:', list1)
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)

#对子列表修改
list1[1].append(50)
print('修改方式2后:', list1)
print('浅拷贝的list2', list2)
print('深拷贝的list3', list3)

# 修改前:
# 浅拷贝的list2 [10, [100, 200], 20, 30]
# 深拷贝的list3 [10, [100, 200], 20, 30]

# 修改方式1后: [10, [100, 200], 20, 30, 100]
# 浅拷贝的list2 [10, [100, 200], 20, 30]
# 深拷贝的list3 [10, [100, 200], 20, 30]

# 修改方式2后: [10, [100, 200, 50], 20, 30, 100]
# 浅拷贝的list2 [10, [100, 200, 50], 20, 30]
# 深拷贝的list3 [10, [100, 200], 20, 30]

3.字典.keys():获取字典所有的键并且返回
字典.values(): 获取字典所有的值并且返回
字典.items():将字典中的每个键值对转换一个一个的元组作为序列中的元素返回

print(dog.keys())      
# dict_keys(['name', 'age', 'type', 'price', 'color'])

print(dog.values())     
# dict_values(['旺财', 3, '土狗', 30000, '黄色'])

print(dog.items())      
# dict_items([('name', '旺财'), ('age', 3), ('type', '土狗'), ('price', 30000), ('color', '黄色')])

4.字典1.update(字典2): 将字典2中的键值对全部添加到字典1中

dog = {'name': '旺财', 'age': 3, 'type': '土狗', 'price': 30000, 'color': '黄色'}
#有相同键则修改,无则增加
dog.update({'a': 10, 'b': 20, 'age': 10})
print(dog)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值