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 中的所有元素

  • 相关阅读:
    5种主要聚类算法的简单介绍-转发
    序列标注中的BIO标注介绍
    Lecture1- Introduction and Word Vectors 斯坦福 nlp 教程
    Word embedding
    RNN
    《生成对抗网络GAN的原理与应用专题》笔记
    《自控力》《基因组:人类自传》的读后联想
    开源共享一个训练好的中文词向量(语料是维基百科的内容,大概1G多一点)
    “程序的迭代”——复杂性度量随想
    人工智能算法脑图
  • 原文地址:https://www.cnblogs.com/hansonwang99/p/4961793.html
Copyright © 2011-2022 走看看