• day05——字典


    day05

    字典

    字典—— dict:

    字典无序的,可变的数据类型

    用于存储大量数据,字典要比列表快,将数据和数据之间进行关联

    lst1 = ['常鑫','李文虎','张宇'] # 姓名
    lst2 = [10,80,100] # 分数
    print(lst1[0],lst[0])
    

    逗号分隔叫做一个元素

    {键 : 值,键 : 值} ——键值对

    字典以散列表和哈希表存储

    字典的键必须是可哈希的——不可变的数据类型——避免哈希冲突使用了(开放寻址法)

    不可哈希的——可变的数据类型:列表

    要求唯一——如果有重复的后面的将前面的覆盖

    字典的值:可以任意

    定义:dic = {} 
    dic = {"常鑫":10,"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼",[1,2]:"meet"}
    print(dic)
    

    字典的增加

    • dic['10'] = 89 : 暴力添加
    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    dic['李文虎'] = 99
    print(dic)
    
    • dic.setdefault('内容':'内容') :

    用李文虎这个键去字典进行查询,如果不存在就执行添加,如果存在就不添加

    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    dic.setdefault('李文虎':'99')
    print(dic)
    print(dic.setdefault('李文虎'))
    

    字典的删除

    • del dic[键] :通过字典的键删除键值对
    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    del dic['常鑫'] 
    print(dic)
    
    • dic.pop(键) :通过字典的键删除键值对

    也有返回值:返回的是被删除的值

    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    print(dic.pop('常鑫'))
    print(dic)
    
    • dic.clear() :清空
    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    dic.clear()
    print(dic)
    

    字典的改

    • dic[键] = 值 : 字典中没有这个键值对,就是添加,有的时候就是修改
    dic = {'常鑫':[1,2,3],'李文虎':'89'}
    dic['常鑫'] = 'dsb'
    print(dic)
    
    • dic.update(字典) :update括号中的级别高于update前面的字典,有一样就更改值,如果没有就添加在后面
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    dic1 = {"1":3,"5":9,"李文虎":100}
    dic1.update(dic)
    print(dic1)
    

    字典的查

    • for循环获取的是字典中每个键值对的键
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    for i in dic:
        print(i)
    
    • dic.get(键):通过键获取值,如果不存在就返回None
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    print(dic.get('常鑫'))# 结果是[1,2,3]
    
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    print(dic.get('cx'))# 结果是None
    
    • dic[键] (建议不使用): 通过键获取值,如果不存在就报错
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    print(dic['常鑫']) # 结果是[1,2,3]
    
    dic = {"常鑫":[1,2,3],'李文虎': '89'}
    print(dic['cx']) # 报错
    

    其他操作

    dic = {"1":3,"5":9,"李文虎":100}
    for i in dic:
        print(i,dic.get(i)) # 获取所有键和值
    
    • dic.keys() : 把键获取到高仿列表里,支持for循环,不支持索引

    print(list(dic.keys())) # 获取到列表

    dic1 = {"1":3,"5":9,"李文虎":100}
    print(dic.keys()) # 结果是:高仿列表—— dic_keys(['1','5','李文虎']) 
    
    # 获取字典中所有的键
    for i in dic.keys():
        print(i)
        
    # 获取字典中所有的值
    lst = []
    for i in dic:
        lst.append(dic[i])
    print(lst)
    
    • dic.values() :把值获取到高仿列表里,支持for循环,不支持索引

    print(list(dic.values())) # 获取到列表

    dic1 = {"1":3,"5":9,"李文虎":100}
    # 获取字典中所有的值
    print(list(dic.values())) # 结果是[3, 9, 100]
    
    • dic.items() : 把键和值组成的元组获取到高仿列表里,支持for循环,不支持索引

    print(list(dic.items())) # 获取到列表

    dic1 = {"1":3,"5":9,"李文虎":100}
    print(dic.items())
    # 结果是dict_items([('1', 3), ('5', 9), ('李文虎', 100)])
    
    # 获取字典的键和值
    for i in dic.items():
        print(i[0],i[1])
    
    dic1 = {"1":3,"5":9,"李文虎":100}
    for i in dic1.items():
        print(i)
    # 结果是
    ('1', 3)
    ('5', 9)
    ('李文虎', 100)
        
    for k,v in dic1.items():
    print(k,v)    # 获取每个元素的键和值
    # 结果是:
    1 3
    5 9
    李文虎 100
    

    解构

    a, b = 10,12
    print(a)
    print(b) 
    # 结果是 
    # 10 
    # 12
    
    # 面试题
    a = 10
    b = 20
    a,b = b,a
    print(a,b) # 结果:20 10
    
    a,b = [1,2] 
    print(a,b)  
    # 结果是 1 2
    
    a,b = (3,4)
    print(a,b)
     # 结果是: 1 2
        
    a,b = "23"
    print(a,b)  # 结果是: 2 3
       
    工作之后可能会遇见
    a,_,b = (3,4,5)
    print(a,b)   # 等号后边的值和前面的变量名要一一对应
    
    a = 10,12  # 本质就是一个元组
    print(a)  # 结果是 (10,12)
    
    a,b = {"1":"a","2":"b"}  # 得到的是键
    print(a,b)  # 结果是 1 2
    
    

    字典的嵌套

    通过键一层一层的查找

    # dic = {1001:["周杰伦","林俊杰"],
    #        1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
    #        1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
    #        1004:{"韦小宝":[{"教主夫人":["教主"]},
    #                     {"阿珂":"刺客"},
    #                     {"双儿":"天地会"},
    #                     {"爱心觉罗建宁":"公主"},
    #                     {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
    #                            "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
    #                              }},
    #                     {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
    #        1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
    #        }
    
    
    # print(dic)
    # print(dic[1004]["韦小宝"][0]["教主夫人"][0])
    # print(dic[1005]["常鑫"][-1])
    # print(dic[1002]["汪峰"]["前妻2"][-1])
    # print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
    # print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
    
    
  • 相关阅读:
    转:ibatis的N+1问题解决方案
    转:ibatis动态sql
    转:Spring源码分析:IOC容器
    web项目中通过spring获得ApplicationContext
    转:import static和import的区别
    python实现linux命令结果输出
    linux获取当前pts
    docker挂载本地目录
    mysql数据导入导出
    python实现linux远程操控windows执行cmd命令
  • 原文地址:https://www.cnblogs.com/NiceSnake/p/11165635.html
Copyright © 2020-2023  润新知