day - 7 总结

一 . 字典

1 . 认识字典

  1. 什么是字典(dict):

1) 字典是容器类数据类型;对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中

例如: {键1:值1, 键2:值2:}

2) 字典是可变的(支持增删改);字典是无序的(不支持下标操作)

3) 元素的要求:

         a. 键: 1) 键必须是不可变的数据类型的数据:(列表,字典不行) ;

                    2) 键是唯一的

         b. 值: 没有要求

2.字典的特征:

      1)字典是无序的

例子:print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})  

      2)字典的键是不可变数据

例子:dict2 = {10: 20, 1.2:  30, 'a': 10, True : 20, [1, 2]: 30}  #TypeError: unhashable type: 'list'

      3)键是唯一的

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

3.字典查找

3.1: 查单个(重要)         -  获取单个值

语法1: 字典[键]           -  获取指定键对应的值,键不存在报错

 语法2: 字典.get(键)   -  获取指定键对应的值,键不存在返回None

 语法2: 字典.get(键,默认值)   -  获取指定键对应的值,键不存在返回默认值

例子: 创建一个字典保存一个班级信息

class1 = {

    'name': 'python',

    'address' : '14教师',

    '班主任': {'name': '舒玲' , 'qq' : '723350822 ', 'gender': '女', 'age': 18 },

    '讲师' : {'name': '余婷' , 'qq' : '726550822 ', 'gender': '女', 'age': 18 },

    'student' : [

        { 'name': 'wxk' , 'qq' : '949678620 ', 'gender': '男', 'age': 18,'linkman': {'name': 'wgb','tel':187} },

        {'name': '伍旭魁', 'qq': '949678621 ', 'gender': '男', 'age': 25, 'linkman': {'name': '伍国兵', 'tel': 133}},

        { 'name': 'wx1' , 'qq' : '949678622 ', 'gender': '女', 'age': 28,'linkman': {'name': 'wgb','tel':187} },

        { 'name': 'wx2' , 'qq' : '949678622 ', 'gender': '男', 'age': 13,'linkman': {'name': 'wgb','tel':187} },

]}

#1 获取班级名字

print(class1['name'])

# 2 获取讲师名字

print(class1['讲师']['name'])

# 3.班主任的名字

print(class1['班主任']['qq'])

# 4.所有学生的名字

for x  in class1['student']:

    print(x['name'])

print( x['name'] for x in class1['student'])

# 5.统计学生的个数

count = 0

for x in class1['student']:

    if x['gender'] == '男':

        count += 1

print(count)

# 6. 计算班级学生的平均年龄

totalage = 0

for x in class1['student']:

    totalage += stu['age']

    count += 1

print(f'平均年纪:{totalage / count:.2f}')

# 7. 打印所有学生的联系人的电话号码

for x in  class1['student']:

    print(x['linkman']['tel'])

3.2:遍历

语法: for 变量 in 字典:

        循环体

例子:

dog = {'name': '菜菜', 'gender': '母狗', 'breed': '哈士奇', 'age': 3}

for x in dog:

    print(x, dog[x])

  1. . 字典的增删改
  1. 增.改

语法1: 字典[键] = 值   - 如果键不存在就添加键值对;如果键存在就修改其值

语法2: 字典.setdefault(键, 值) -如果键不存在添加,存在不会改变

  1. 删除

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

2) 字典.pop(键)   -  取出指定键对应的值

  1. . 字典的相关操作和方法
  1. 字典相关操作: in 和 not in

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

2)字典的in 和 not in 判断的是是否存在指定的键

例子:

print(10 in {'a': 10, 'b': 20})           #False

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

  1. 字典相关函数: len  dict:
  1. 字典转换成列表的时候,是将字典的键作为列表的元素

例子:

dict1 = {'a': 10, 'b': 20}

print(list(dict1))                 #['a', 'b']

  1. 对数据的要求 :

a .要求本身是一个序列

b.序列中的元素必须是有两个元素的小序列

c. 小序列的第一个元素是不可变的类型的数据

例子;

print(dict(['ab', 'cd', 'ef']))  #{'a': 'b', 'c': 'd', 'e': 'f'}

print(dict(['ab', (10, 20), ['age', 18], range(2)])) #{'a': 'b', 10: 20, 'age': 18, 0: 1}

  1. 字典相关方法

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

2) 字典.copy() -复制字典

3) 字典.items()  - 以元组的形式返回键值对

   字典.keys()   - 获取所有的键

   字典.values()  - 获取所有的值

4) 字典.update(字典2)  - 将字典2中所有的键值对都添加到字典1

例子:

for key,value in dog.items():

    print(key,value)        #name 菜菜gender 母狗breed 哈士奇age 3

  1. . 字典推导式
  1. 字典推导式

结构1: {表达式:表达式2 for 变量 in 序列}

结构2: {表达式1:表达式2 for 变量 in 序列 if 条件语句}

例子:

dog = {'name': '菜菜', 'gender': '母狗', 'breed': '哈士奇', 'age': 3}

result = { x: None for x in dog}

print(result) #{'name': None, 'gender': None, 'breed': None, 'age': None}
 
dict1 ={'a': 10, 'b': 20, 'c': 30}

result ={dict1[x]: x for x in dict1}   #jianzhi

print(result)   #{10: 'a', 20: 'b', 30: 'c'}
 
总结:注意字典是{},列表是[],元组是(),注意到这点正确是解决问题的第一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值