美文网首页
python基础类型&常用内置库:dict(字段),set(集合

python基础类型&常用内置库:dict(字段),set(集合

作者: kykywdrawl | 来源:发表于2019-03-29 22:15 被阅读0次
    • Dict(字典)
    • Set(集合)
    • collections(内置库)
    • functools(内置库)

    Dict(字典)

    • 字典视为一组无序的键值对,并要求键是唯一的(在一个字典中)。一对大括号创建一个空字典:{}。在括号内放置以逗号分隔的键值对列表,将初始键值对添加到字典中;这也是字典在输出上的写法。

    • 字典上的主要操作是使用某个键存储值并提取给定键的值。也可以删除带有del的键值对。

    • 字典对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果要对其进行排序,只需对其应用sorted()函数.要检查单个键是否在字典中,请使用in关键字。

    1.

    屏幕快照 2019-03-29 下午2.20.20的副本 2.png

    2.

    屏幕快照 2019-03-29 下午2.42.38.png

    3. 字典常用方法 屏幕快照 2019-03-29 下午8.00.26.png

    4. items()和iteritems()区别:

    • 字典的items()作用:是可以将字典中的所有项,以列表方式返回。因为字典是无序的,所以用items方法返回字典的所有项,也是没有顺序的.

    • 字典的iteritems()作用:与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器。

    • 迭代器: 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator;

      • list、dict、str虽然是Iterable,却不是Iterator。 为什么list、dict、str等数据类型不是Iterator?这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
      • Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。*
    • 总结

      • iteritems()方法在需要迭代结果的时候使用最适合,而且它的工作效率非常的高。
      • 在Python2.x中,iteritems() 用于返回本身字典列表操作后的迭代器【Returns an iterator on all items(key/value pairs) 】,不占用额外的内存。
      • 在Python 3.x 里面,iteritems()方法已经废除了。在3.x里用 items()替换iteritems() ,可以用于 for 来循环遍历。

    Set(集合)

    • 集合对象是一组无序排列的可哈希的值,集合成员可以做字段中的键,集合支持用in和 not in操作符检查成员,有len()得到集合的大小,用for循环迭代集合的成员,记住:集合是无序的.
    • 集合有两种不同的类型, 可变集合(set)和不可变集合(frozenset)

    1. 屏幕快照 2019-03-29 下午8.11.02.png

    2.

    屏幕快照 2019-03-29 下午8.12.57.png

    3.

    屏幕快照 2019-03-29 下午8.14.44.png

    collections

    • 该模块实现了专门的容器数据类型,提供了Python的通用内置容器,dict,list,set和tuple的替代方法。

    • collections内置容器


      屏幕快照 2019-03-29 下午8.42.40.png

    1. namedtuple

    • namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便
    • 例子


      屏幕快照 2019-03-29 下午8.47.43.png

    2.deque

    • 使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈;
    • deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
    • 例子


      屏幕快照 2019-03-29 下午8.47.43.png

    3.defaultdict

    • 返回一个新的类字典对象。 defaultdict是内置dict类的子类。它会覆盖一个方法并添加一个可写实例变量.其余功能与dict类相同
    屏幕快照 2019-03-29 下午9.52.58.png 屏幕快照 2019-03-29 下午9.59.02.png 屏幕快照 2019-03-29 下午10.01.30.png

    4.OrderedDict

    • 有序词典就像常规词典一样,但它们记住了项目的插入顺序。迭代有序字典时,将按照首次添加键的顺序返回项目。


      屏幕快照 2019-03-29 下午10.12.40.png

    functools

    • functools模块用于高阶函数:作用于或返回其他函数的函数。通常,任何可调用对象都可以被视为用于此模块的功能。

    1. wraps

    • Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。
    屏幕快照 2019-04-11 下午2.12.59.png 屏幕快照 2019-04-11 下午2.13.28.png 屏幕快照 2019-04-11 下午2.14.17.png 屏幕快照 2019-04-15 下午2.03.12.png

    相关文章

      网友评论

          本文标题:python基础类型&常用内置库:dict(字段),set(集合

          本文链接:https://www.haomeiwen.com/subject/npulbqtx.html