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 中的所有元素
Python核心编程读笔 6: 映射和集合类型的更多相关文章
- 【4】python核心编程 第七章-映射和集合类型
1.映射类型的相关函数 函数 操作 dict([container]) 创建字典的工厂函数.如果提供了容器类(container) , 就 用其中的条目填充字典,否则就创建一个空字典. len(map ...
- python核心编程学习记录之映射和集合类型
字典是python里唯一的映射类型
- Python核心编程读笔 5: python的序列
第六章 序列:字符串.列表.元组 一.序列 (1)序列类型操作符 seq[ind] 获得下标为 ind 的元素 seq[ind1:ind2] 切片操作 seq * expr 序列重复 expr 次 s ...
- Python核心编程读笔 12:OOP
第13章 面向对象编程 一.基本概念 1.object类是所有类的基类,如果你的类没有继承任何其他父类,object 将作为默认的父类. 2.python创建实例时无需new: myFirstObje ...
- Python核心编程读笔 10:函数和函数式编程
第11章 函数和函数式编程 一 调用函数 1 关键字参数 def foo(x): foo_suite # presumably does some processing with 'x' 标准调用 ...
- Python核心编程读笔 1
第一章 欢迎来到Python世界 1 Python特点: 高级的可进行系统调用的解释性语言 面向对象 可升级.扩展.移植 自动内存管理器(内存管理由Python解释器负责) 2 安装 Windows的 ...
- Python核心编程读笔 13:执行环境
第14章 执行环境 一.可调用对象 python有四种可调用对象:函数.方法.类.一些类的实例 1 函数 (1)内建函数(BIF) BIF是用c/c++写的,编译后放入python解释器,然后把它们 ...
- Python核心编程读笔 11:模块
第12章 模块 1.基本概念 模块的文件名就是模块名字.py 每个模块都定义了自己唯一的名称空间 模块的搜索路径:会被保存在 sys 模块的 sys.path 变量里 >>>sys. ...
- Python核心编程读笔 8: 文件和输入输出
第九章 文件和输入输出 一.文件内建函数.方法.属性 1 文件内建函数 file_object = open(file_name, access_mode='r', buffering=-1) 工厂函 ...
随机推荐
- GCC 命令行具体解释
作者: www.linuxfans.org mozilla 1.gcc包括的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明确前面这半句是什么意 ...
- 蓝桥杯 BASIC 29 高精度加法(大数)
[思路]:大数处理都一样. [AC代码]:代码细节能够美化一下. #include <iostream> #include <algorithm> #include <c ...
- Android开发中目前流行控件和知识点总结
Android开发中目前流行控件和知识点总结 1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...
- 枚举基类Enum详解
本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使 ...
- HTML——CSS样式表&布局页面
CSS样式表: 一.作用:美化网页,页面布局. 二.分类: 内联,写在body里标签style=""里面的样式,优点是控制精确,可重用性差. 内嵌,嵌在网页的head里面,可重用性 ...
- SQL 数据库知识点回顾
SQL2008 一.安装注意事项: 1.修改用户权限(在一个安装页面中有七八个)(改成net.) 2.添加当前系统用户为账户 二.主键,约束,索引 三.增删改查: insert.delete.upda ...
- Linux修改Shell命令提示符及颜色
Linux修改Shell命令提示符及颜色 1. Linux登录过程中加载配置文件顺序: /etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~ ...
- jQuery 随滚动条滚动效果 (适用于内容页长文章)
直接入题! 当内容页比较长的时候,网站右侧一直是空白,不如放点有用的东西给用户看,最好不要放广告,因为那样很邪恶,你懂的. 好吧,昨天写了这个东西,jQuery滚动随动区块,代码如下: //侧栏随动 ...
- 分享一个PHP调用RestFul接口的函数
php越来越前端化,大型系统中的php经常是调用后端服务的接口,这里分享一个函数.希望对大家有用. /** * [http 调用接口函数] * @Date 2016-07-11 * @Author G ...
- python image show()方法的预览问题
在windows下面使用PIL中Image的show()函数时,执行下列代码: from PIL import Image img = Image.open("1.png") ...