zoukankan      html  css  js  c++  java
  • Day5--Python--字典

    字典
    1.什么是字典
    dict. 以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据
    {'jj':'林俊杰','jay':'周杰伦'}
    查询效率非常高,通过key来查找元素
    内部使用key来计算一个内存地址,hash(哈希)算法. key必须是不可变的数据类型(key 必须是可hash的类型)
    可哈希就是不可变

    dic = {"jj":"林俊杰", "jay":"周杰伦","tz":"陶喆", 1:"哈哈", (1,2,3):"胡辣汤"} # unhashable type: 'list' 所以元组可以做key,列表 不可以
    print(dic)

    2.字典的增删改查
    1.字典的新增:
    dict[新key] = value
    dict.setdefault()

    dic = {}
    dic['徐峥'] = '人在囧途' # 直接用key往里面存数据即可
    dic['黄渤'] = '疯狂的石头'
    dic['黄渤'] = '摸金校尉' #如果key已经存在,那么会替换掉原来的value,修改

    dic.setdefault('黄秋生','')
    dic.setdefault('黄秋生','无间道') #如果存在了key,不会执行新增

    print(dic)
    print(dic.setdefault('黄秋生')) #none

    2.删除
    pop(key)
    popitem() 删除任意键值对,由python内部机制指定
    clear() 清空
    del dict[key]

    dic = {"黄日华": "天龙八部", "吕颂贤": "笑傲江湖", "苏有朋": "倚天屠龙记", "六小龄童": "西游记"}
    dic.pop("吕颂贤") # 指定key删除
    dic.popitem() # 由python机制指定删除任意键值对
    del dic["黄日华"] # 删除
    dic.clear() # 清空字典
    print(dic)

        

              

    dic = dict.fromkeys('abcde',111)
    print(dic)  # {'a': 111, 'b': 111, 'c': 111, 'd': 111, 'e': 111}
    ret = dic.get('a')
    print(ret)
    ret2 = dic.get('g')
    print(ret2)   # None
    ret3 = dic.get('g', '没找到')
    print(ret3)   # 没找到
    
    



    3.修改
    dict['key'] = '修改后的内容'
    update()

    dic = {}
    dic2 = {}
    dic.update(dic2) #替换和新增 dic2 替换dic1中key相同的内容,增加dic没有的内容,dic中不重合的内容不变
    print(dic)


    dic = {"刘能": "王小利", "赵四": "刘晓光", "王木生": "范伟", "谢大脚": "于月仙", "李大国": "小鬼"}
    # dic['王木生'] = "刘伟"
    dic2 = {"刘能": "大阳哥", "赵四": "github", "王木生": "汪峰", "谢大脚": "冯提莫", "王大拿": "金老板"}
    dic.update(dic2)
    print(dic)



    4.查询
    1.用key直接查询 dict[key]
    2.get(key,如果key不存在返回的数据)
    3.setdefault() #1.执行新增流程 2.查询结果

    print(dic['key']) #当key不存在,则报错

    #get方法
    print(dic.get('key','没查到所需信息')) #print(dic.get('key'))没有key,返回None,或返回第二项输入的内容
    setdefault() 1.新增(先看看有没有key,如果有就过,如果没有,执行新增
    dic = {}
    dic['红'] = '红花'
    v = dic.setdefault('橙', '橙光')
    v2 = dic.setdefault('红', '大红花') #由于已经存在了key,所以不执行新增,直接查询结果
    print(v2)

    # 查询
    dic = {'刘能': '大阳哥', '赵四': 'github', '王木生': '汪峰', '谢大脚': '冯提莫', '李大国': '小鬼', '王大拿': '金老板'}
    # 1. 最直观。 直接用key
    print(dic['周杰伦']) # 当这个key不存在的时候会报错
    # 2. get方法
    print(dic.get("谢大脚", "周杰伦不在这里")) # 没有key. 返回None
    # 3. setdefault() 1. 新增(先看有没有key, 如果有就过, 如果没有,执行新增) 2.根据key把值返回
    dic = {}
    dic["盖伦"] = "德玛西亚之力"
    value = dic.setdefault("菲奥娜", "无双剑姬") # 新增
    value2 = dic.setdefault("盖伦", "刘伟") # 由于已经存在了key。 所以新增不执行。 直接查询结果
    value3 = dic.setdefault("薇恩", "坑")

    print(value3)
    print(dic)

    5.操作
    1.keys()获取所有键 这个返回的不是列表,很像列表
    2.values()获取所有的值
    3.items()获取所有的键值对. 返回的是元组
    解构,直接把元组或者列表中的数据拿出来.
    a,b,c = (a1,b1,c1) 必须一一对应

    6.遍历字典
        在循环字典时,不要增加或删除此字典的键值对  
    for key in dict:
    dict[key]

    for k, v in dict.items():
    print(k, v)



    dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}

    对字典的遍历
    print(dic.keys()) # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表
    for key in dic.keys():
    print(key) # 拿到key
    print(dic[key]) # 拿到value

    print(dic.values())
    for value in dic.values():
    print(value)


    也可以遍历字典
    [('汪峰', '大陆音乐半壁江山'), ('周杰伦', '亚洲音乐天王'), ('罗志祥', '亚洲舞王')]
    print(dic.items()) # 拿到的是key和value
    for k, v in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
    print(k) # 元组
    print(v)


    字典本身是一个可迭代对象,可以直接进行for循环
    for el in dic: # 直接拿到key
    print(el)
    print(dic[el])

    前面的变量的个数和后面解包的个数一致
    a, b = (10, 20) # 解构, 解包 可以是 10, 20 [10,20]
    print(a)
    print(b)


    3.字典嵌套
    wf = {
    "name": "汪峰",
    "age": 48,
    "成名曲": "春天里",
    "wife": {
    "name": "章子怡",
    "age": 39,
    "工作": "演员"
    },
    "children":[
    {"num": "001", "name": "汪一", "hobby": "唱歌"},
    {"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
    ]
    }

    wf['wife']['age'] = wf['wife']['age'] + 10
    print(wf)

    4. fromkeys

       

    dic = dict.fromkeys([1, 2, 3], '111')
    dic[1] = 2
    print(dic)
    print(id(dic[1]))
    print(id(dic[2]))
    print(id(dic[3]))
    
    '''
    {1: 2, 2: '111', 3: '111'}
    1410100272
    2250339877304
    2250339877304
    '''
    
    
  • 相关阅读:
    Win10 开启IIS后,访问“localhost”,报错无“C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files”写访问权限
    使用pip安装Python扩展包时,如何提高速度?
    Django之路由层
    第一个Django项目
    Django简介
    DIY一个Web框架
    http协议
    Web应用和Web框架
    Python递归的经典案例
    Python修改文件的两种方法
  • 原文地址:https://www.cnblogs.com/surasun/p/9605443.html
Copyright © 2011-2022 走看看