• Python之字典


    1.1字典的特征

    key-value键值对的数据的集合
    可变的,无序的,key不重复
    

    1.2字典的dict定义,初始化

    d = dict() 或者 d = {} 
    dict(**kwargs) 使用name=value对初始化一个字典 
        #dc = dict(name='harden',age=18)
    dict(iterable, **kwarg) 使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是 一个二元结构     
        #dc = dict([('a',1),('b',2)]) & d = dict(((1,'a'),(2,'b'))) & d = dict(([1,'a'],[2,'b']))
    类方法dict.fromkeys(iterable, value) 
        #d = dict.fromkeys(range(5)) 
        #d = dict.fromkeys(range(5),0)
    

    1.3字典的元素访问

    d[key] 
        返回key对应的值value 
        key不存在抛出KeyError异常 
    get(key[, default]) 
         返回key对应的值value
          key不存在返回缺省值,如果没有设置缺省值就返回None 
    setdefault(key[, default]) 
        返回key对应的值value 
         key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None
    

    1.4字典的增加和修改

    d[key] = value 
        将key对应的值修改为value 
        key不存在添加新的kv对 
    update([other]) -> None 
        使用另一个字典的kv对更新本字典 
         key不存在,就添加 
         key存在,覆盖已经存在的key对应的值 
         就地修改
        d.update(red=1) d.update((('red',2),)) d.update({'red':3})
    

    1.5字典的删除

    pop(key[, default]) 
        key存在,移除它,并返回它的value 
        key不存在,返回给定的default 
        default未设置,key不存在则抛出KeyError异常 
    popitem()
        移除并返回一个任意的键值对 
        字典为empty,抛出KeyError异常 
    clear()
        清空字典
    

    1.6字典的遍历: 

    1.遍历key
    for k in d:
        print(k)
    for k in d.keys():
        print(k)
    

      

    2.遍历value
    for k in d:
        print(d[k])
    for v in d.values():
        print(v)
    for k in d.keys():
        print(d[k])
    

     

    3.遍历kv对
    for item in d.items():
        print(item)
    for item in d.items():
        print(item[0],item[1])
    for k,v in d.items():
        print(k,v)
    

      

    Python3中,keys、values、items方法返回一个类似一个生成器的可迭代对象,不会把函数的返回结 果复制到内存中
        Dictionary view对象 
        字典的entry的动态的视图,字典变化,视图将反映出这些变化
    

    1.6.1正确的遍历(for循环迭代字典的时候,不能操作此字典)

    d = dict(a=1,b=2,c='abc)
    for k,v in d.items():
        d.pop(k) #异常
    d = dict(a=1, b=2, c='abc') 
    keys = [] 
    for k,v in d.items():
        if isinstance(v, str): 
            keys.append(k)
    for k in keys: 
        d.pop(k) 
    print(d)

    1.7字典的key

    key的要求和set的元素要求一致 
        set的元素可以就是看做key,set可以看做dict的简化版 
        hashable 可哈希才可以作为key,可以使用hash()测试 
    

    1.8defaultdict

    collections.defaultdict([default_factory[, ...]]) 
        第一个参数是default_factory,缺省是None,它提供一个初始化函数。当key不存在的时候,会调用 这个工厂函数来生成key对应的value 
    
    from collections import defaultdict 
    import random
    d1 = defaultdict(list)
    for k in 'abcdef': 
        for i in range(random.randint(1,5)): 
            d1[k].append(i)
    print(d1)    
    #不到入defaultdict模块时的操作
    import
    random d1 = {}

    for k in 'abcdef':   for i in range(random.randint(1,5)):   if k not in d1.keys():   d1[k] = []   d1[k].append(i) print(d1)

    1.9OrderedDict

    collections.OrderedDict([items]) 
         key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序 
    应用场景:
    假如使用字典记录了N个产品,这些产品使用ID由小到大加入到字典中 
    除了使用字典检索的遍历,有时候需要取出ID,但是希望是按照输入的顺序,因为输入顺序是有序的
    否则还需要重新把遍历到的值排序
    

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    test
    linux安装web服务小总结-用户和权限
    linux安装pure-ftpd和配置
    空值等
    学习laravel
    vb窗体内获取窗体内坐标颜色值
    自从我安装卸载几次OFFICE和WPS后,VB6就出现了这样的问题。
    VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
    部件ieframe.dll或其附件之一不能正确注册:一个文件丢失或无效
    修改组策略,轻松控制游戏许可权。
  • 原文地址:https://www.cnblogs.com/harden13/p/8699108.html
Copyright © 2020-2023  润新知