第七章 映射和集合能力

一 字典(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 中的所有元素

Python核心编程读笔 6: 映射和集合类型的更多相关文章

  1. 【4】python核心编程 第七章-映射和集合类型

    1.映射类型的相关函数 函数 操作 dict([container]) 创建字典的工厂函数.如果提供了容器类(container) , 就 用其中的条目填充字典,否则就创建一个空字典. len(map ...

  2. python核心编程学习记录之映射和集合类型

    字典是python里唯一的映射类型

  3. Python核心编程读笔 5: python的序列

    第六章 序列:字符串.列表.元组 一.序列 (1)序列类型操作符 seq[ind] 获得下标为 ind 的元素 seq[ind1:ind2] 切片操作 seq * expr 序列重复 expr 次 s ...

  4. Python核心编程读笔 12:OOP

    第13章 面向对象编程 一.基本概念 1.object类是所有类的基类,如果你的类没有继承任何其他父类,object 将作为默认的父类. 2.python创建实例时无需new: myFirstObje ...

  5. Python核心编程读笔 10:函数和函数式编程

    第11章 函数和函数式编程 一 调用函数  1 关键字参数 def foo(x): foo_suite # presumably does some processing with 'x' 标准调用 ...

  6. Python核心编程读笔 1

    第一章 欢迎来到Python世界 1 Python特点: 高级的可进行系统调用的解释性语言 面向对象 可升级.扩展.移植 自动内存管理器(内存管理由Python解释器负责) 2 安装 Windows的 ...

  7. Python核心编程读笔 13:执行环境

    第14章  执行环境 一.可调用对象 python有四种可调用对象:函数.方法.类.一些类的实例 1 函数 (1)内建函数(BIF) BIF是用c/c++写的,编译后放入python解释器,然后把它们 ...

  8. Python核心编程读笔 11:模块

    第12章 模块 1.基本概念 模块的文件名就是模块名字.py 每个模块都定义了自己唯一的名称空间 模块的搜索路径:会被保存在 sys 模块的 sys.path 变量里 >>>sys. ...

  9. Python核心编程读笔 8: 文件和输入输出

    第九章 文件和输入输出 一.文件内建函数.方法.属性 1 文件内建函数 file_object = open(file_name, access_mode='r', buffering=-1) 工厂函 ...

随机推荐

  1. leetcode_question_125 Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  2. struts2 s:textfield

    初学struts2,在头脑中一直在想一个问题,就是对于struts2 ,当应用其自身的标签时,例如: <s:form> <s:textfield name="a" ...

  3. Oracle入门学习笔记

    参考文献 中文教程     http://wenku.baidu.com/view/b425f404e87101f69e319566.html 经典教程     http://wenku.baidu. ...

  4. 蜗牛爱课 - iOS7、8模态半透明弹出框

    //源Controller中跳转方法实现 MKDialogController *controller = [[MKDialogController alloc] init]; controller. ...

  5. 带参数的URLconf

    我们在Django建立helloworld自定义页面创建的页面,只能算是一个静态页,发起一个请求,返回一个固定的值,并不能满足我们动态的需求.今天我们创建一个带参数的URLconf,根据参数展示不同的 ...

  6. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

  7. [转]数组引用:C++ 数组做参数 深入分析

    "数组引用"以避免"数组降阶"(本文曾贴于VCKBASE\C++论坛) 受[hpho]的一段模板函数的启发,特写此文,如有雷同,实在遗憾. 数组降阶是个讨厌的事 ...

  8. 了解单位em和px的区别

    这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...

  9. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  10. 解决Delphi自带UTF8解码缺陷(使用API)

    因为Delphi自带的转换函数遇到其无法识别的字符串就返回空,下面函数可解决该问题. function DecodeUtf8Str(const S: UTF8String): WideString;v ...