zoukankan      html  css  js  c++  java
  • python基础知识三 字典-dict + 菜中菜

    3.7字典:dict+菜中菜

    1.简介

    ​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联

    ​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}

    逗号分割的是一个元素,'cx'(键):10(值) -- 键值对

    字典的键:要使用不可变数据类型(可哈希)。要求键唯一,如果有重复的,后面的会将前面的覆盖。

    ​ 可哈希的 -- 不可变的数据类型 - 避免哈希冲突使用了开放寻址法

    ​ 不可哈希的 -- 可变的数据类型

    字典的值可以任意。

    2.字典的使用

    1.增:
    1. 直增:dict1['li'] = 89
    2. dict1.setdefault('liw',100)#此方法按键去查字典是否有对应的键值对,如果没有,执行添加,如果有,则不添加,有返回值,原字典有,则返回值,没有返回None
    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
    #1
    dict1['li'] = 89
    print(dict1)
    #2
    print(dict1.setdefault('liw'))
    dict1.setdefault('liw',100)
    print(dict1.setdefault('liw',100))
    print(dict1)
    
    2.删:
    1. del dict1['cx'] :通过查找字典的键删除键值对,如果没有会报错。

    2. dict1.pop('cx'):通过字典的键删除键值对,返回被删除值

    3. dict1.clear():清空

      dict1 = {'cx':10,'liwenhu':80,'zhangyu':50,'wu':20}
      #1
      del dict1['cx'] 
      print(dict1)
      #2
      dict1.pop('wu')
      print(dict1.pop('wu'))
      print(dict1)
      #3
      dict1.clear()
      print(dict1)
      
    3.改:
    1. dict1['cx'] = 'dsb' 通过键,如果原字典中没有此键对应的键值对,就是添加,如果有,就是修改

    2. dict1.update(dict2) :update括号中的字典级别高于前边的字典(括号中放的是要跟新的字典)

      dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
      #2
      dict2.update(dict1)
      print(dict2)
      
    4.查:
    1. for 循环,获取的是键。

    2. dict1.get('cx') :通过键获取值,如果没有会返回None

    3. dict1['cx'] :通过键获取值,如果没有会报错。

      dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
      #1
      for i in dict1:
          print(i)
      #2  
      print(dict1.get('cx'))
      #3
      print(dict1['cx'])
      
    5.字典的嵌套:
    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])
    

    3.菜中菜:

    1.高仿列表:
    1. dict1.keys():获取字典中所有的键
    2. dict1.vlaues():获取字典中所有的值
    3. dict1.items():获取字典中所有的键和值(键值对)
    2.解构:

    解构示意图:

    ​ a = 10

    ​ b = 12

    ​ a,b = b,a

    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
    #1.键值对输出
    for i in dict1:
        print(i,dict1.get(i))
    print(dict1.keys())#2.高仿列表 ,支持for循环,不支持索引-- 结果:ict_keys([True, 'zhangyu', 'cx', 'liwenhu'])
    for i in dict1.keys():
        print(i)
    #print(dict1.keys()[0])
    #3.dict1.values(),获取所有的值(可以转列表)
    print(dict1.values())
    print(list(dict1.values()))
    #4.dict1.items():获取键值对
    for i in dict1.items():
        print(i)
    ##解构
    for i,j in dict1.items():#解构输出键值对
        print(i,j)
    #5.解构。
    a,b = 10 ,12
    print(a)
    print(b)
    
    a = 10
    b = 12
    a,b = b,a
    print(a)
    print(b)
    
    a,b = [1,2]
    print(a,b)
    
    a,_,b = (3.4.5)#'_'无用,只为将不要的4赋值进去
    print(a,b)#等号后边的值与前边的变量数要一致
    
    a = 10,12
    print(a)#a是一个元组
    
    a,b ={'1':'a','2':b}
    print(a,b)#取到的是键
    
    
  • 相关阅读:
    30个Python常用极简代码,拿走就用
    如果只写一行代码能实现什么?看完我彻底服了
    面试官问我:用了HTTPS就安全了吗?用了HTTPS会被抓包吗?我竟然回答不上来......
    程序员常见的口头禅
    没有心仪的offer,要不要找一个工作先凑合?
    微信新出“拍了拍”功能!
    UVa 340 Master-Mind Hints
    UVa 575 Skew Binary 歪斜二进制
    UVa 10250 The Other Two Trees
    UVa 10106 Product
  • 原文地址:https://www.cnblogs.com/Onlywang/p/11172379.html
Copyright © 2011-2022 走看看