• python之dic {字典}(重要指数*****)


    1. 什么是字典

    {'name': '汪峰', 'age': 18} '键':'值' 别的语言键值对数据
    
    • 键: 必须是可哈希(不可变的数据类型),并且是唯一的

    • 值: 任意

      可以保存任意类型的数据

    • 字典是无序的

      python3.6版本以上,默认定义了顺序,python3.5以下是随机显示

    • 不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

    • 字典是可变的

    2. 字典能干什么

    • 字典可以存储大量数据,字典比列表还要大

    • 字典在查找值的时候很方便快速

    • 字典能够将数据进行关联

    • 有明确对应关系的时候推荐使用字典,字典一定要整明白,很重要

    • 目前所学的字典是不能转换的

    缺点:

    • 字典比较消耗内存 最常用的:字符串 列表 字典

    3. 字典怎么用: 增、删、改、查

    3.1 增

    方法一: 直接增
    dic["键"] = "值"
    

    例题:

    dic['name'] = '汪峰'
    dic['age'] = 18
    print(dic) 
    结果:
    {'name': '汪峰', 'age': 18}
    
    方法二:setdefault() 无则添加,有则不变
    • 先去字典查看要添加的键存不存在
    • 如果字典中存在就不添加,反之添加
    dic.setdefault("键","值")
    

    例题:

    s1 = dic.setdefault('王菲')
    # 输出结果
    # {'王菲': None}
    dic.setdefault('a','aaa')
    print(dic)
    
    一句话总结
    dic["键"] = "值"
    dic.setdefault("键","值")  # 键不存在就添加,存在就不填加.
    

    3.2 删

    没有remove

    方法一:pop('键') 通过键删除,具有返回值,返回的是被删除的值
    pop("键")
    
    方法二: del dic 删除整个字典
    del dic
    
    方法三: del dic['键'] 删除指定的键值对
    del dic["键"]
    
    方法四: dic.clear() 清空 删除整个字典中的键值对
    dic.clear() 
    
    一句话总结
    pop("键")
    del dic["键"]
    dic.clear()  清空
    

    3.3 改

    方法一: dic["键"] = "值" 直接改
    dic["键"] = "值"
    

    例题:

    dic = {'a':'b','b':'c'}
    dic['b'] = '这是新值' 有则改之无则添加
    
    方法二: update({'键':值,'键':值})
    • update后面括号里面的级别高,会被前面的中相同的key对应的值覆盖
    • 没有的话会填加
    dic.update({"a":1,"b":1})
    
    一句话总结
    dic["键"] = "值"
    dic.update({"a":1,"b":1})
    

    3.4 查

    • 字典的查询只能通过键获取值,不能通过值获取键
    方法一: get('键','可以自己指定内容') 不存在返回的是None获取值的时候可以指定返回的内容,键不存在的时候不报错

    例题:

    dic = {"a":1}
    dic["a"] += 5 # 给键a的值加5
    dic.get("a") # 获取a的值
    print(dic)
    '''
    输出结果
    {'a': 6}
    '''
    
    方法二: dic["键"] 获取值的时候可以指定返回的内容,键不存在的时候就报错

    例题:

    dic = {1:2,"a":"a1"}
    print(dic["c"])
    '''
    输出结果
    报错,没有这个键
    '''
    
    方法三: dic.setdefault("键")

    例题:

    dic = {"a":1}
    b = dic.setdefault('a')
    print(b)
    '''
    输出结果
    1
    '''
    
    一句话总结

    dic["键"]

    get('键','可以自己指定内容')

    dic.setdefault("键")

    3.5 其他的方法

    for循环-获取字典的键的两种方法
    方法一:
    for k in dic:
      print(k,dic[k]) #这里需要在打印的时候获取k的值
    

    例题:

    dic = {1:2,"a":"a1"}
    for i in dic:   # for循环字典的时候打印的是字典的键
        print(i,dic[i])
    '''
    输出结果
    1
    a
    '''
    
    方法二:
    for k in dic.keys():
      	print(k) # 这里在打印的时候不要指定
    

    例题:

    dic = {1:2,"a":"a1"}
    for v in dic.keys():
        print(v)
    '''
    输出结果
    1
    a
    '''
    

    三种模式:

    dic.keys() -- 返回的是一个高仿列表 -- 没有索引

    dic.values() -- 返回的是一个高仿列表 -- 没有索引

    dic.items() -- 返回的是一个高仿列表,列表里存放的是元组类型元组第一个是键,第二个元素是值

    3.6 解构

    方法:

    a,b = b,a    --- 交换的是指向
    a,b = 1,2
    a,b = (45,6)
    a,b = [1,4]
    a,b = {"s":1,"a":1}  # 字典拆包后的结果是键赋值给了a和b的变量
    

    例题:

    a = 1
    b = 2
    print("is a",id(a))
    print("is b",id(b))
    a,b = b,a
    print("is a",id(a))
    print("is b",id(b))
    
    a,_,c = "你好啊"
    print(a,c)
    # 结果:你啊
    a,b = ("1","2")
    print(a,b)
    # 结果:1,2
    a,b = ["4","5"]
    print(a,b)
    # 结果:4,5
    a,b = {"a":1,"b":2,}
    print(a,b)
    # 结果a b
    

    3.7 enumerate() 枚举

    • 给你要迭代对象,加一个序号 默认是从0开始,可以自己指定

    例题:

    li = [1,2,3,4,54]
    for i,k in enumerate(li):  # enumerate 第二个参数默认不写就是0    -- 枚举
        print(i,k)
    '''
    输出结果
    0 1
    1 2
    2 3
    3 4
    4 54
    '''
    

    练习题:

    题目: 有字典dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111},现需求是显示如下列表:
    1 电脑
    2 手机
    3 耳机
    4 老婆
    
    方法一:
    dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111}
    count = 1
    for i in dic:
      print(count,i)
      count += 1
    
    方法二:
    for k,v in dic.enumerate(dic): # enumerate默认添加的序号从0开始,正好是索引的那个值
      print(k+1,v)
    '''
    输出结果
    1 电脑
    2 手机
    3 耳机
    4 老婆
    '''
    

    3.8 字典的嵌套:

    查找的字典的嵌套时,按照键去一层一层的查找

    例题:

    dic = {
        101:{1:["周杰伦","林俊杰"],2:{"汪峰":["国际章",{"前妻1":["熊大","熊二"]},
                                      {"前妻2":["葫芦娃","木吒"]}]}},
        102:{1:["李小龙","吴京","李连杰"],2:{"谢霆锋":["张柏芝","王菲"]},
             3:["alex","wusir","大象","奇奇"]},
        103:{1:["郭美美","干爹"],2:{"王宝强":{"马蓉":"宋哲"}}},
        201:{1:["凹凸曼","皮卡丘"],2:{"朱怼怼":{"杨幂":"刘恺威"}}}
    }
    
    1. 找:葫芦娃
    print(dic[101][2]["汪峰"][2]["前妻2"][0])
    2. 找:大象
    print(dic[102][3][2])
    3. 找:宋哲
    print(dic[103][2]["王宝强"]["马蓉"])
    
  • 相关阅读:
    springboot与mybatisplus集成原理
    《金字塔原理》读书笔记
    域内LDAP学习
    域内委派攻击
    域内ACL攻防
    域内用户与机器用户
    BloodHound分析域结构
    Net MVC内存马
    计算机网络再次整理————socket[一]
    计算机网络再次整理————tcp例子[五]
  • 原文地址:https://www.cnblogs.com/zanao/p/11000892.html
Copyright © 2020-2023  润新知