• chapter3.3字典


    字典

    key-value键值对的数据集合

    可变的,无序的,key不重复

    字典定义,初始化

    d = dict() 或 d = {}

    dict(*kwargs)使用name = value对初始化字典

    dict(iterable,**kwarg)使用可迭代对象和name=value对构造字典,可迭代对象必须是一个二元结构

      d = dict(((1,'a',)(2,'b')))或者d = dict(([1,'a'],[2,'b']))

    dict(mapping,**kwarg)使用字典构造另一个字典

    d = {'a':10,'b':20,'c':None,'d':[1,2,3],'e':{1,2,3}}

    d = dict.fromkeys(range(5))

      a={a=1,b=2}

      a={'a':1,'b':2}

    key要求可hash,value无要求,

    maping 映射

    字典复制,复杂结构的引用地址不变,引用类型的引用计数加一

      d={'a':10,;'b':None,'c':[1,2,3]}

    字典元素的访问

    d[key]

      返回key对应的值value
      key不存在抛出KeyError异常

    d2.get('a'),  返回d2中 'a' 对应的值value,不存在返回缺省值,缺省值为空返回None

    setdefault(key[,default])  有key,取value,没有补缺省值,未设置缺省值就返回None

    字典增加和修改

    d[key] = value

    update([other])-->None

      使用另一个字典的kv对更新本字典

      key不存在就添加

      key存在,覆盖已经存在的key对应的值

      就地修改

    字典的删除

    pop(key[,default])  key存在,移除,返回value,不存在返回缺省值default

    popitem()  移除并返回任意的键值对,字典为空,抛出异常,少用

    clear()  清空字典

    del a 删除元素,对于引用对象,减少了一个对象的引用,删除的是名称,而不是对象,删除对象的引用计数

    字典遍历

    for ... in dict    遍历key,d.keys()  ,d.values()

    for item  遍历键值对

    Python3中,keys,items,values方法返回的是类似生成器的可迭代对象,不会把返回的结果复制到内存中

      Dictionary view对象,可以使用len()、iter()、in 操作

      字典的entry的动态视图,字典变化,视图将反映出这些变化

      keys返回亦歌类似set对象,也就是看作set集合,如果value都可以hash,那么items也可以看作类set对象

    for k ,v in d2.items() 1433

    字典不能在遍历时移除或增加元素,会报错,先将要移除的值的key放如列表中,再统一移除

    key,与set元素要求一致

    set可以看作dict的简化版

    hashable 可hash才可以作为key,使用hash()测试

    defaultdict(default_factory[, ...]) --> dict with default factory

    第一个参数default_factory,缺省是None,提供一个初始化函数,key不存在时,会调用这个工厂函数生成key对应的value

    from collections import defaultdict

    OrderedDict(self, /, *args, **kwargs)

    3.6版本的Python字典直接是OrderedDict,排序好的,(Ipython不一定有效果)在3.5和之前是无序的.

    有序字典可以记录元素插入顺序,打印也是这个顺序

    使用OrderedDict来记录顺序,key的输入顺序本身无序

  • 相关阅读:
    Java之集合类应用总结
    Java的HashMap和HashTable
    Java安全通信:HTTPS与SSL
    字符串如何排序
    HashMap泛型编程
    Java之currenHashMap
    Android游戏开发:游戏框架的搭建(1)
    Java安全通信概述
    嵌入式linux学习步骤
    图片水平无缝滚动的代码
  • 原文地址:https://www.cnblogs.com/rprp789/p/9478031.html
Copyright © 2020-2023  润新知