• day5__(字典、增删改查、字典的嵌套)


    一、字典

    列表缺点:1)列表可以存储大量的数据,但数据之间关联性不强: 2)列表的查询速度比较慢

    容器型数据类型:dict

    按照可变与不可变的数据类型的分类:

    ​ 不可变(可哈希)的数据类型:int,str,bool(布尔值),tuple(元组)。
    ​ 可变(不可哈希)的数据类型:list(列表),dict(字典),set(集合)。

    字典:{}括起来,以键值对形式存储的容器型数据类型:

    dic = {'张三':   #键值对
               {'name': '张四', 'age': 18, 'sex': '男'},
           'catr':   #键值对
               ['大牛', '卡罗拉', '霸道']
           }
    print(dic)
    

    注:

    • 键必须是不可变的数据类型:int,str, 值可以是任意数据类型和对像,唯 一的。
    • 字典3.5版之前(包含3.5)是无序的
    • 字典3.6x会按照初建立字典的顺序排列
    • 字典3.7以后都是有序的。

    字典的缺点:以空间换时间

    字典的优点:查询速度非常快,存储关联性的数据

    1、字典的创建

    方法一:

    dic = dict((('one',1),('two',2),('three',3)))
    print(dic)
    输出结果:{'one': 1, 'two': 2, 'three': 3}
    

    方法二:

    dic = dict(one=1, two=2, three=3)
    print(dic)
    输出结果:{'one': 1, 'two': 2, 'three': 3}
    

    方法三:

    dic = dict({'one': 1, 'two': 2, 'three': 3})
    print(dic)  
    输出结果:{'one': 1, 'two': 2, 'three': 3}
    

    2、增

    通过键值对直接增加

    dic = {'name': 'mrxiong', 'age': 18}
    dic['weight'] = 75 # 没有weight这个键,就增加键值对
    print(dic)     # {'name': 'mrxiong', 'age': 18, 'weight': 75}
    dic['name'] = 'barry' # 有name这个键,就成了字典的改值
    print(dic)    # {'name': 'barry', 'age': 18, 'weight': 75}
    

    setdefault

    dic = {'name':'mrxiong','age':30,}
    dic.setdefault('heigth',175)   # 没有height此键,则添加
    print(dic)
    
    dic.setdefault('name','barry')  # 有此键则不变
    print(dic)
    
    #它有返回值
    dic = {'name': '太白', 'age': 18}
    ret = dic.setdefault('name')
    print(ret)  # 太白
    

    3、删

    pop 通过key删除字典的键值对,有返回值,可设置返回值。

    dic = {'name':'mrxiong','age':30,}
    ret = dic.pop('name')  #有返回值
    print(dic)
    

    当我们不知道字典中有没有这键值,我们可以通过pop实现,如果没有键值时不对字典进行删除并返回设置的参数提示

    dic = {'name':'mrxiong','age':30,}
    ret = dic.pop('abcc','没有此键')  #有返回值
    print(ret)
    print(dic)
    

    clear()清空

    dic = {'name':'mrxiong','age':30,}
    dic.clear()
    print(dic)
    

    del

    通过键删除键值对

    dic = {'name':'mrxiong','age':30,}
    del dic['name']
    print(dic)
    

    4、改

    通过键值对直接改

    dic = {'name': 'mrxiong', 'age': 30}
    dic['name'] = 'barry'
    print(dic)
    输出结果:
    {'name': 'barry', 'age': 30}
    
    dic = {'name': 'mrxiong', 'age': 30}
    dic.update(ses='男',height=175)
    print(dic)
    输出结果:
    {'name': 'mrxiong', 'age': 30, 'ses': '男', 'height': 175}
    
    dic = {'name': 'mrxiong', 'age': 30}
    dic.update(name='barry')
    print(dic)
    输出结果:
    {'name': 'barry', 'age': 30}
    
    dic = {'name': 'mrxiong', 'age': 30}
    dic.update([('one', 1), ('two', 2)])
    print(dic)
    输出结果:
    {'name': 'mrxiong', 'age': 30, 'one': 1, 'two': 2}
    

    5、查

    get

    dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '开车', '玩']}
    v = dic.get('hobby_list')
    print(v)
    输出结果:['直男', '开车', '玩']
    
    dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '开车', '玩']}
    v = dic.get('name')
    print(v)
    输出结果:mrxiong
    
    dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '开车', '玩']}
    v = dic.get('nameone')
    print(v)
    输出结果:None
    
    dic = {'name': 'mrxiong', 'age': 30, 'hobby_list': ['直男', '开车', '玩']}
    v = dic.get('nameone','没有此键')    #可以设置返回值
    print(v)
    输出结果:没有此键
    

    6、三个特殊的操作

    keys()
    dic = {'name': '太白', 'age': 18}
    print(dic.keys()) # dict_keys(['name', 'age']) 
    
    values()
    dic = {'name': '太白', 'age': 18}
    print(dic.values()) # dict_values(['太白', 18])
    
    items()
    dic = {'name': '太白', 'age': 18}
    print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
    

    练习题:

    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    请在字典中添加一个键值对,"k4": "v4",输出添加后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic['k4']='v4'
    print(dic)
    
    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic.setdefault('k4', 'v4')
    print(dic)
    

    请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic['k1']='alex'
    print(dic)
    
    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic.update(k1='alex')
    print(dic)
    

    请在k3对应的值中追加一个元素 44,输出修改后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic["k3"].append(44)
    print(dic)
    

    请在k3对应的值中把22改为'apple',输出修改后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic['k3'][2] = 'apple'
    print(dic)
    

    请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic['k3'].insert(1, 18)
    print(dic)
    

    二、字典的嵌套

    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}

    请在k3对应的值中追加一个元素 44,输出修改后的字典

    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    dic["k3"].append(44)
    print(dic)
    

    练习:

    dic = {
        'name': '汪峰',
        'age': 48,
        'wife': [{'name': '国际章', 'age': 38}],
        'children': {'girl_first': '小苹果', 'girl_second': '小怡', 'girl_three': '顶顶'}
    }
    

    ​ 1】获取汪峰的名字。

    name = dic['name']
    print(name)    #汪峰
    

    ​ 2】获取这个字典:{'name':'国际章','age':38}。

    l1 = dic['wife']  # 先获取到这个列表
    di = l1[0]  # 列表按照索引取值,这个字典是列表的第一个元素,所以通过索引获取到这个字典
    print(di)
    

    优化:

    l1 = dic['wife'][0]
    print(l1)   #{'name': '国际章', 'age': 38}
    

    ​ 3】获取汪峰妻子的名字。

    di = dic['wife'][0]  # 这个是上一次题获取的小字典的代码
    wife_name= di['name']  # 通过小字典然后再通过键就能获取到对应的值
    print(wife_name)
    

    优化:

    l3 = dic['wife'][0]['name']
    print(l3)
    

    ​ 4】获取汪峰的第三个孩子名字。

    dic2 = dic['children']  # 先获取这个字典
    name = dic2['girl_three']  # 在通过这个字典获取第三个孩子的名字
    print(name)
    

    优化:

    l2 = dic['children']['girl_three']
    print(l2)   #顶顶
    
  • 相关阅读:
    动手动脑——异常处理
    JAVA异常处理总结
    打印沙漏
    暑假第八周进度报告
    暑假第七周进度报告
    暑假第六周进度报告
    暑假第五周进度报告
    暑假第四周进度报告
    暑假第三周进度报告
    暑假第二周进度报告
  • 原文地址:https://www.cnblogs.com/mr-xiong/p/13157289.html
Copyright © 2020-2023  润新知