• python字典


    一. 字典的简单介绍   

    字典(dict)是python中唯⼀的⼀个映射类型,他是以     { }   括起来的键值对组成. 在dict中key是 唯⼀的. 在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的, 如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的, 那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址而规定的. 已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set 语法 :    {key1: value1, key2: value2....} 注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

    dic={"关羽":"将军","李云龙":"师长","和尚":"排长","刘备":"皇上"}
    print(dic)
    {'关羽': '将军', '李云龙': '师长', '和尚': '排长', '刘备': '皇上'}
    

     

    合法的
     dic = {1: "马化腾", False:"阿里巴巴", "sylar":"帅的不行不行的", (1, "哈哈"): "元组"}
     print(dic) 
    
    不合法:
    dic = {1: "马化腾", False:"阿里巴巴", "sylar":"帅的不行不行的", (1, "哈哈"): "元组", ["吼吼"]:"列表"}
    print(dic)
    *不可以是列表

    dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进⾏切片工作. 它只能通过key来获取dict中的数据

    二. 字典的增删改查和其他相关操作

    1. 增加

    dic={"TT":"汤普森"}
    dic["jj"]="凌俊杰"
    print(dic)
    
    {'TT': '汤普森', 'jj': '凌俊杰'}
    如果key重复了. 会替换掉原来的value
    
    dic={"TT":"汤普森"}
    dic["jj"]="凌俊杰"
    dic["jj"]="123"
    print(dic)
    
    {'TT': '汤普森', 'jj': '123'}
    dic={"TT":"汤普森"}
    dic.setdefault("詹姆斯","湖人")
    print(dic)
    {'TT': '汤普森', '詹姆斯': '湖人'}
    如果字典中已经包含了这个key. 不再继续保存
    dic={"TT":"汤普森"}
    dic.setdefault("詹姆斯","湖人")
    dic.setdefault("詹姆斯","篮球运动员")
    print(dic)
    {'TT': '汤普森', '詹姆斯': '湖人'}
    dic={"TT":"汤普森"}
    dic.setdefault("科比")
    print(dic)
    {'TT': '汤普森', '科比': None}

    2. 删除

    dic={"pig":"","dog":"","apple":"苹果"}
    dic.pop("pig")
    print(dic)
    {'dog': '', 'apple': '苹果'}
    删除一个元素. 返回这个元素的value值
    dic={"pig":"","dog":"","apple":"苹果"}
    e=dic.pop("pig")
    print(e)
    猪
    dic={"pig":"","dog":"","apple":"苹果"}
    del dic["dog"]
    print(dic)
    {'pig': '', 'apple': '苹果'}
    随机删除
    dic={"pig":"","dog":"","apple":"苹果"}
    dic.popitem()
    print(dic)
    返回给你的是一个元组
    e=dic.pop("pig")
    print(e)
    清除
    dic={"pig":"","dog":"","apple":"苹果"}
    dic.clear()
    print(dic)

    3. 修改

    dic={"李云龙":"独立团","裤兜":500,"姚明":"篮球"}
    dic["裤兜"]=dic["裤兜"]-200
    print(dic)
    {'李云龙': '独立团', '裤兜': 300, '姚明': '篮球'}
    把dic2中的内容更新到 dic1 , 如果存在了key. 替换. 如果不存在,添加
    dic1={"李云龙":"营长","和尚":"警卫员","诸葛亮":"丞相"}
    dic2={"关羽":"将军","李云龙":"师长","和尚":"排长","刘备":"皇上"}
    dic1.update(dic2)   
    print(dic1)
    print(dic2)
    {'李云龙': '师长', '和尚': '排长', '诸葛亮': '丞相', '关羽': '将军', '刘备': '皇上'}
    {'关羽': '将军', '李云龙': '师长', '和尚': '排长', '刘备': '皇上'}

    4. 查询

    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic["及时雨"])
    宋江
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic["小李广"])
    报错
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic.get("及时雨"))
    宋江
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic.get("小李广"))
    None
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic.get("小李广","花荣")) 
    花荣
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    ret=dic.setdefault("及时雨")
    print(ret)         
    宋江
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    ret=dic.setdefault("小李广")
    print(ret) 
    None
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    ret=dic.setdefault("小李广","花荣")
    print(ret) 
    花荣
    # 1. 首先判断原来的字典中有没有这个key . 如果没有. 执行新增
    # 2. 用这个key去字典中查询, 返回查到的结果

    5. 其他相关操作
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic.keys()) 
    dict_keys(['及时雨', '豹子头', '黑旋风'])
    
    拿到所有的key, 返回key的集合. 像是列表. 但是不是列表
    
    print(dic.values())
    dict_values(['宋江', '林冲', '李逵'])
    可以进行迭代循环
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    for key in dic.keys():
    print(key)
    
    及时雨
    豹子头
    黑旋风
    
    for values in dic.values():
    print(values)
    宋江
    林冲
    李逵
    拿到键值对
    
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    print(dic.items())
    
    dict_items([('及时雨', '宋江'), ('豹子头', '林冲'), ('黑旋风', '李逵')])
    遍历dict
    dic={"及时雨":"宋江","豹子头":"林冲","黑旋风":"李逵"}
    for item in dic.items():
    print(item)
    ('及时雨', '宋江')
    ('豹子头', '林冲')
    ('黑旋风', '李逵')
    
    for k , v in dic.items():                # = item # (key, value)
    print(k,v)
    
    及时雨 宋江
    豹子头 林冲
    黑旋风 李逵
    解构 . 解包
    
    a, b = (1, 2)
    print(a)
    print(b)
    
    1
    2
    a, b, c = ("马化腾", "马云", "马良")
    print(b)
    
    马云
    镶嵌
    dic = {
        "name":"汪峰",
        "age": 58,
        "wife":{
            "name":"国际章",
            "salary": 180000,
            "age": 37
        },
        "children":[
            {"name":"老大", "age": 18},
            {"name":"老二", "age": 118}
        ]
    }
    print(dic["children"][1]["age"])
    
    118
    
    print(dic["wife"]['salary'])
    180000
    字典的for 循环
    dic = {1: 'a', 2:'b', 3:'c'}
    for a in dic:
    print(a)
    1
    2
    3
    print(dic[a])
    a
    b
    c
    
    直接循环字典.拿到的是key

     

  • 相关阅读:
    springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 整合redis缓存 SSM 后台框架 rest接口 shiro druid maven bootstrap html5
    继承
    封装
    对象的生命周期
    类与对象
    如何理解类?
    面向过程
    jdk1.8新特性
    git使用指南
  • 原文地址:https://www.cnblogs.com/chenyibai/p/9274470.html
Copyright © 2020-2023  润新知