zoukankan      html  css  js  c++  java
  • Python核心编程读笔 6: 映射和集合类型

    第七章 映射和集合能力

    一 字典(python中唯一的映射类型)

    1 基本

      创建和赋值:

        正常创建:>>>dict = {'name':'earth', 'port':80}

        用工厂函数dict()创建:

            >>> fdict = dict( (['x', 1], ['y', 2]) )
            >>> fdict
            {'y': 2, 'x': 1}
        使用fromkeys()创建一个默认字典:

            >>> ddict = {}.fromkeys(('x', 'y'), -1)
            >>> ddict
            {'y': -1, 'x': -1}

            >>> edict = {}.fromkeys(('foo', 'bar'))
            >>> edict
            {'foo': None, 'bar': None}
      

      访问字典里的值:

        dict['name']

        

        >>>> for key in dict2.keys():
        ... print 'key=%s, value=%s' % (key, dict2[key])

        >>>> for key in dict2:
        ... print 'key=%s, value=%s' % (key, dict2[key])

        has_key() 和 in、not in 可以判断字典中是否有某键

      

      删除字典元素和字典:

        del dict['name']  

        dict.clear()

        del dict

        dict.pop('name') 删除并返回键为'name'的条目

          

    2 操作符

     <> == [] in not in(现在程序员可以不用has_key()方法了)

    3 函数

    (1)标准类型函数

      type() str() cmp() len() dict() hash()

    (2)映射类型内建方法

      dict.clear() 删除字典中所有元素

      dict.copy() 返回字典(浅复制)的一个副本

      dict.fromkeysc( seq, val=None ) 创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字 典中所有键对应的初始值

      dict.get(key, default=None) 对字典 dict 中的键 key,返回它对应的值 value,如果字典中不存在此 键,则返回 default 的值

      dict.has_key(key)  若键(key)在字典中存在,返回 True,否则返回 False. 在 Python2.2 版本引入 in 和 not in 后,此方法几乎已废弃不用了,但仍提供一个可工作的接口。

      dict.items() 返回一个包含字典中(键, 值)对元组的列表

      dict.keys() 返回一个包含字典中键的列表

      dict.iter()  ???

      dict.pop( key [, default] )   和方法 get()相似,若字典中key存在,删除并返回 dict[key],若key不存在,且没有给出 default 的值,引发 KeyError 异常。

      dict.setdefault(key, default=None) 和方法 set()相似,若字典中不存在 key,由dict[key]=default 为它赋值。

      dict.update(dict2) 将字典 dict2 的键-值对添加到字典 dict

      dict.values() 返回一个包含字典中所有值的列表

    4 字典的键

      不允许一个键对应多个值,当有字典键重复赋值时,取最后的赋值;

      键必须是可哈希的;

    二、集合

    1 基本

      创建和赋值:只能用工厂方法创建

        set():

          >>> s = set('cheeseshop')
          >>> s
          set(['c', 'e', 'h', 'o', 'p', 's'])

        frozenset():  不可变集合,不能被修改!

          >>> t = frozenset('bookshop')
          >>> t
          frozenset(['b', 'h', 'k', 'o', 'p', 's'])

      访问集合中的值:

        >>> for i in s:
        ... print i
      

      更新集合:  

        s.add('z')

        s.update('pypi')

        s.remove('z')

        s -= set('pypi')

    2 操作符

        in not in

        != ==

        < <= > >=  这是表示 子集/超集!!!!!

        |     联合

        &    交集

        -     差集  等价于difference()函数

        ^    异或,又称对称差分, 等价于symmetric_difference()函数

        |=   相当于update()方法,向集合中添加成员

        &=   交集更新,等价于intersection_update()

        -=    差更新,等价于difference_update()

        ^=   异或更新,等价于symmetric_difference_update()

    3 函数

      s.issubset(t) 如果s是t的子集,则返回True,否则返回 False

      s.issuperset(t) 如果 t 是 s 的超集,则返回 True,否则返回 False

      s.union(t) 返回一个新集合,该集合是 s 和 t 的并集

      s.intersection(t) 返回一个新集合,该集合是 s 和 t 的交集

      s.difference(t) 返回一个新集合,该集合是 s 的成员,但不是 t 的成员

      s.symmetric_difference(t) 返回一个新集合,该集合是 s 或 t 的成员,但不是 s 和 t 共有的 成员

      s.copy() 返回一个新集合,它是集合 s 的浅复制

      s.update(t) 用 t 中的元素修改 s, 即,s 现在包含 s 或 t 的成员

      s.intersection_update(t) s 中的成员是共同属于 s 和 t 的元素。

      s.difference_update(t) s 中的成员是属于 s 但不包含在 t 中的元素

      s.symmetric_difference_update(t) s 中的成员更新为那些包含在 s 或 t 中,但不是s和t 共有的元素

      s.add(obj) 在集合s中添加对象

      obj s.remove(obj) 从集合s中删除对象obj,若obj不是集合s中的元素(obj not in s),将引发KeyError 错误

      s.discard(obj) 如果 obj 是集合 s 中的元素,从集合 s 中删除对象 obj;

      s.pop() 删除集合 s 中的任意一个对象,并返回它

      s.clear() 删除集合 s 中的所有元素

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/hansonwang99/p/4961793.html
Copyright © 2011-2022 走看看