8 字典

本文详细介绍了Python字典的基本操作,包括创建、转换、增删改查等。通过实例展示了如何利用字典的in/not in方法、更新、从keys、values、items进行遍历,以及如何进行字典的遍历和查找。此外,还提供了字典的其他内置函数如update和fromkeys的使用。最后,通过一个用户注册功能的案例,实践了字典在实际问题中的应用。
摘要由CSDN通过智能技术生成

8 字典

1 字典定义

  • 1.1 字典的定义
    dict1 = {}   # 空字典
    dict2 = dict()  # 空字典    list1 = list()  空列表   tuple1= tuple()  空元组
    dict3 = {"key1": "value1", "key2": "value2", ... ...}
    
  • 1.2 列表 元组向字典转换
    """
    list可以转成字典 但是前提:列表中元素都要成对出现
    tuple可以转成字典 但是前提:元组中元素都要成对出现
    """
    list1 = [('name', 'lucky'), ('age', 18)]
    dict1 = dict(list1)
    print(dict1)    # {'name': 'lucky', 'age': 18}
    tuple1 = (('name', 'lucky'), ('age', 18))
    dict2 = dict(tuple1)
    print(dict2)    # {'name': 'lucky', 'age': 18}
    
  • 1.3 字典的in not in方法
    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    print('张三' in dict2)      # True 判断 张三 在不在dict2的keys中
    print('张柳' in dict2)     # False
    

2 字典的增删改查

  • 2.1 字典的增 改
    """
    增加:  格式:dict6[key]=value
    特点:  按照上面的格式,如果在字典中存在同名的key,则发生值的覆盖(后面的值覆盖原来的)。
           如果没有同名的key,则实现的添加功能(key:value添加到字典中)
    """
    dict1 = {}
    dict1['brand'] = 'mi'
    print(dict1)    # {'brand': 'mi'}
    dict1['brand'] = 'huawei'
    print(dict1)    # {'brand': 'huawei'}
    dict1['type'] = 'p30 pro'
    dict1['price'] = 9000
    dict1['color'] = '黑色'
    print(dict1)    # {'brand': 'huawei', 'type': 'p30 pro', 'price': 9000, 'color': '黑色'}
    
  • 2.2 字典的查功能
    # 1. 根据key获取值,如果key在字典中存在则报出对应的值
    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    print(dict2["张三"])   # 100
    
    # 2. 根据key获取值,如果key在字典中没有存在则报出keyError
    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    print(dict2["张三2"])  # KeyError: '张三2'
    
    # 3. 根据key获取值,如果key在字典中不存在,也不报错的方法
    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    result = dict2.get("张三2")  
    print(result)   # None
    
    # 4. 根据key获取值,如果key在字典中不存在,也不报错返回默认值
    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    result = dict2.get("张三2", 99)
    print(result)   # 99
    
  • 2.3 字典的删功能
    """
    1, del dict[key]
    key存在时:删除对应的键值对
    key不存在时:报错 KeyError: '王五8'
    """
    dict1 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    del dict1['王五']
    print(dict1)    # {'张三': 100, '李四': 100, '赵柳': 99}
    
    del dict1['王五8']
    print(dict1)    # 报错 KeyError: '王五8'
    
    
    """
    2, dict.pop(key[, default])
    dict1.remove(key)  ----> 不存在   报错没有remove函数
    pop(key[,default]) ----> 根据key删除字典中的键值对,返回值是   只要删除成功,则返回键值对的值value
                             pop的默认值,往往是在删除的时候没有找到对应的key,则返回default默认值
    """
    dict1 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    result = dict1.pop('李四')
    print(result)   # 100
    print(dict1)    # {'张三': 100, '王五': 89, '赵柳': 99}
    
    dict1 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    result = dict1.pop('李四8', "字典中没有此键")
    print(result)   # 字典中没有此键
    print(dict1)    # {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    
    
    """
    3, dict.popitem() 随机删除字典中键值对(一般是从末尾删除元素)  
    """
    dict1 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    result = dict1.popitem()
    print(result)   # ('赵柳', 99)
    print(dict1)    # {'张三': 100, '李四': 100, '王五': 89}
    
    
    """
    4, dict.clear() 同列表的clear()
    """
    dict1 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    dict1.clear()
    print(dict1)    # {}
    
  • 2.4 字典的其他内置函数:
    '''
    1, update()合并操作    {}+{} 报错,没有 + 操作
    '''
    dict1= {0: 'tom', 1: 'jack', 2: 'lucy'}
    dict2 = {0: 'lily', '4': 'ruby'}
    dict1.update(dict2)
    print(dict1)    # {0: 'lily', 1: 'jack', 2: 'lucy', '4': 'ruby'}
    
    
    '''
    2, fromkeys(seq,[default])  ---->将seq转成字典的形式 如果没有指定默认的value则用None
        new_dict = dict.fromkeys(list1)---》 {'aa': None, 'bb': None, 'cc': None}
                      ---> 如果指定default,则用default替代None这个value值
        new_dict = dict.fromkeys(list1,10)	---》{'aa': 10, 'bb': 10, 'cc': 10}
    '''
    list1 = ['aa', 'bb', 'cc']
    new_dict = dict.fromkeys(list1)
    print(new_dict) # {'aa': None, 'bb': None, 'cc': None}
    
    list1 = ['aa', 'bb', 'cc']
    new_dict = dict.fromkeys(list1, 20)
    print(new_dict) # {'aa': 20, 'bb': 20, 'cc': 20}
    

3 字典的遍历

  • 3.1 遍历的函数用法

    """
    1,字典中没有下标,无法根据索引查值
    2,字典里面的函数:items()  values()  keys()
    3, for i in dict:遍历的是字典key
    4, keys()  获取字典中的所有key键   (键值对)
    5, values()  取出字典中所有值,保存到列表中
    """
    dict2 = {'张三': 100, '李四': 100, '王五': 89, '赵柳': 99}
    for i in dict2:
    	print(i)    # 张三 李四 王五 赵柳	
    
    print(dict2.items())	# [('张三', 100), ('李四', 100), ('王五', 89), ('赵柳', 99)]
    print(dict2.keys())     # ['张三', '李四', '王五', '赵柳']
    print(dict2.values())   # [100, 100, 89, 99])	
    
  • 3.2 案例 - 求所有学生平均分以及大于平均分的姓名

    dict2 = {'张三': 100, '李四': 80, '王五': 89, '赵柳': 99}
    scores = dict2.values()
    sum_score = sum(scores)
    avg = sum_score/len(scores)
    print(avg)      # 平均分 92.0
    for key, value in dict2.items():
       if value > avg:
           print(key)  # 张三 赵柳
    

4 字典的作业

"""
案例:用户注册功能
1,username
2,password(需要二次验证密码)
3,email(需要验证邮箱格式,qq.com  126.com)
4,phone
5,退出or继续注册
"""
database = []
while True:
    user = {}
    username = input("请输入用户名:")
    user["username"] = username
    password = input("请输入用户密码:")
    second_password = input("请再次确认密码:")
    if second_password != password:
        print("两次密码输入不一致")
        continue
    else:
        user["password"] = password
        email = input("请输入邮箱:")
        if (not email.endswith("qq.com")) and (not email.endswith("126.com")):
            print("邮箱格式错误,请输入qq或126邮箱")
            continue
        else:
            user["email"] = email
            phone = input("请输入手机号码:")
            if len(phone) != 11:
                print("手机号码长度不对")
                continue
            else:
                user["phone"] = phone
                database.append(user)
                y_n = input("是否继续注册y/n:")
                if y_n == "n":
                    break
print(database)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值