`
linvar
  • 浏览: 258918 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

python2.x学习笔记(8)-映射和集合类型

阅读更多
1. 字典是 Python 语言中唯一的映射类型。映射类型对象里哈希值(键) 和指向的对象(值)是一对一的关系.

2. 一个字典对象是可变的,它是一个容器类型,能存储任意个数的 Python 对象,其中也包括其他容器类型。字典类型和序列类型容器类(列表、元组)的区别是存储和访问数据的方式不同。

3. 你所能获得的有序集合只能是字典中的键的集合或者值的集合。
   方法 Keys() 或 values() 返回一个列表,该列表是可排序的。
   你还可以用 items()方法得到包含键、值对的元组的列表来排序。
   由于字典本身是哈希的,所以是无序的。

4. 创建字典和给字典赋值
>>> dict1 = {}
>>> dict2 = {'name': 'earth', 'port': 80}
>>> dict1, dict2
({}, {'port': 80, 'name': 'earth'})
>> fdict = dict((['x', 1], ['y', 2]))
>>> fdict
{'y': 2, 'x': 1}

>>> fdict = dict((['x', 1], ['y', 2]))
>>> fdict
{'y': 2, 'x': 1}

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

5. 如何访问字典中的值
>>> dict2 = {'name': 'earth', 'port': 80}
>>>> for key in dict2.keys():
... print 'key=%s, value=%s' % (key, dict2[key])
从 Python 2.2 开始, 你可以不必再用 keys()方法获取供循环使用的键值列表了。 可以
用迭代器来轻松地访问类序列对象(sequence-like objects),比如字典和文件。
>>> for key in dict2:
... print 'key=%s, value=%s' % (key, dict2[key])

6. 如果我们想访问该字典中的一个数据元素,而它在这个字典中没有对应的键,
将会产生一个KeyError错误:
检查一个字典中是否有某个键的最好方法是用字典的 has_key()方法, 或者另一
种比较好的方法就是从 2.2 版本起用的,in 或 not in 操作符。 has_key() 方法将会在未来的Python 版本中弃用,所以用 in 或 not in 是最好的方法。
>>> 'server' in dict2 # 或 dict2.has_key('server')
False

7. 字典中的键必须是可哈希的, 所以数字和字符串可以作为字典中的键, 但是列表和其他字典不行。
>>> print 'host %(name)s is running on port %(port)d' %dict2
host venus is running on port 6969

8. 避免使用内建对象名字作为变量的标识符
请不要用 dict, list,file, bool, str, input, len 这样的内建类型为变量命名.

9. 内建函数 hash()本身并不是为字典设计的方法,但它可以判断某个对象是否可以做一个字典的键。将一个对象作为参数传递给 hash(), 会返回这个对象的哈希值。 只有这个对象是可哈希的,才可作为字典的键 (函数的返回值是整数,不产生错误或异常)。
  如果用比较操作符来比较两个数值,发现它们是相等的,那么即使二者的数据类型不同, 它
们也会得到相同的哈希值。
  如果非可哈希类型作为参数传递给 hash()方法,会产生 TypeError 错误(因此,如果使用这样的对象作为键给字典赋值时会出错):
>>> hash([])
Traceback (innermost last): File "<stdin>", line 1, in ?
TypeError: list objects are unhashable

10. 字典类型方法
dict.clear ()        删除字典中所有元素
dict.copy ()        返回字典(浅复制)的一个副本
dict.fromkeys (seq,val=None)
创建并返回一个新字典,以 seq 中的元素做该字典的键,
val 做该字典中所有键对应的初始值(如果不提供此值,则默认为 None)
dict.get(key,default=None)     
对字典 dict 中的键 key,返回它对应的值 value,
如果字典中不存在此键,则返回 default 的值(注意,参数 default 的默认值为 None)
dict.has_key(key)    
如果键(key)在字典中存在,返回 True, 
否则返回 False. 在 Python2.2版本引入 in 和 not in 后,此方法几乎已废弃不用了,但仍提供一个可工作的接口。
dict.items()          返回一个包含字典中(键, 值)对元组的列表
dict.keys()           返回一个包含字典中键的列表
dict.iter()       
方法 iteritems(), iterkeys(), itervalues()
与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
dict.popc(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()       返回一个包含字典中所有值的列表

11. 所有不可变的类型都是可哈希的,因此它们都可以做为字典的键。 
一个要说明的是问题是数字:值相等的数字表示相同的键。换句话来说,整型数字 1 和 浮点数 1.0 的哈希值是相同的,即它们是相同的键。

12. 数学上, 把 set 称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素(setelements)。Python 把这个概念引入到它的集合类型对象里。集合对象是一组无序排列的可哈希的值.

13. 和其他容器类型一样,集合支持用 in 和 not in 操作符检查成员, 由 len() 内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,你不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。集合(sets)有两种不同的类型,可变集合(set) 和 不可变集合(frozenset)。

14. 集合被创建的唯一方法 - 用集合的工厂方法 set()和 frozenset():
>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
>>> t = frozenset('bookshop')
>>> t
frozenset(['b', 'h', 'k', 'o', 'p', 's'])
>>> s.add('z')
>>> s.update('pypi')
>>> s.remove('z')
>>> s -= set('pypi')
>>> s | t
>>> s & t
>>> s - t
>>> s ^ t
分享到:
评论

相关推荐

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

    Python学习笔记.pdf

    Python学习笔记中的知识点涵盖了Python编程语言的基础概念和结构。由于文件内容较为复杂且存在OCR识别错误,我们将尝试将内容按可理解的结构和顺序组织并解释这些关键概念。 1. Python基础数据类型:笔记中提及了...

    Python学习笔记-

    ### Python学习笔记知识点总结 #### 一、Python简介与特点 **Python**是一种新兴的、免费的、解释型的、可移植的、开放源代码的脚本编程语言。它不仅适用于快速开发简单脚本,也适合开发复杂的应用程序。Python...

    Python 学习笔记 第二版.pdf

    ### Python学习笔记第二版知识点概览 #### 一、Python语言基础 - **虚拟机**:Python运行在一种称为Python虚拟机(PVM)的环境中。这种虚拟机负责执行Python字节码,提供了语言级别的抽象层,使得Python程序可以在...

    python核心笔记.pdf

    Python中的基础数据类型如数字(【第五章】)、序列(如字符串、列表和元组,【第六章】)、映射和集合(如字典和集合,【第七章】)是构建程序的核心元素。 在【第八章 条件和循环】中,读者将学习如何使用if语句...

    python 大神学习笔记

    在编写Python学习笔记的过程中,作者雨痕详细总结了Python编程语言的许多关键知识点,这些内容覆盖了从基本语法到高级特性等多个层面,对于有一定编程基础的读者来说,这份笔记不仅可以帮助他们复习和巩固已学知识,...

    Python学习笔记.docx

    ### Python 学习笔记知识点详解 #### 一、Python 内置对象介绍 **1. 列表(Lists)** - **定义**: 列表是一种有序的数据结构,支持多种数据类型,允许相同类型的元素重复。 - **特点**: - 可变性:列表是可以修改...

    python语言学习笔记.pdf

    Python作为一种高级编程...总体而言,这份Python学习笔记详细介绍了Python语言的基础知识和面向对象的高级特性,适合有C或C++语言基础的初学者,通过系统性地学习Python的语法知识和操作示例,可以快速入门Python编程。

    Python学习笔记2

    Python支持多种内置的数据类型,包括数字类型(如整数、浮点数、复数)、序列类型(如字符串、列表、元组)、映射类型(如字典)以及集合类型等。 1. **数字类型**: - **整数(int)**:用于表示没有小数部分的...

    《python核心笔记》

    7. **映射和集合类型**:介绍字典、集合等数据结构。 8. **条件和循环**:教授控制流语句的使用方法。 9. **文件和输入输出**:讲解文件操作的基本方法。 10. **错误和异常**:介绍如何处理运行时错误。 11. **函数...

    疯狂的python学习笔记

    字典是一种映射类型,使用大括号 `{}` 表示,其中每个元素包含一个键和一个值。 - **创建字典**:例如 `dic = {'name': 'wang', 'age': 30, 'gender': 'male'}`。 - **访问字典**:通过键来访问字典中的值,例如 `...

    Python自学笔记 Python核心编程第二版学习笔记 很详细的学习笔记 建议收藏 共148页.pdf

    这份"Python自学笔记 Python核心编程第二版学习笔记"涵盖了从基础到进阶的广泛主题,适合初学者和有一定经验的开发者进行深入学习。 一、解释器options 在Python中,解释器选项允许用户自定义执行行为。例如,`-d`...

    python学习笔记

    ### Python学习笔记知识点梳理 #### 一、Python基础学习概览 - **Python的基本语法**: - 变量和数据类型(数字、字符串、布尔值等)。 - 运算符(算术运算符、比较运算符、逻辑运算符等)。 - 控制结构(条件...

    Python学习笔记

    数字类型用于表示数值,字符串用于表示文本,列表、元组和集合用于存储多个数据项的有序和无序集合,字典用于存储键值对映射。Python中还有一种特殊的类型,即None,用于表示空值。 Python的核心数据类型和关系图...

    Python+学习笔记

    Python支持两种集合类型:set(无序)和frozenset(不可变)。集合提供了并集、交集等数学运算。 #### 三、表达式与运算 1. **句法规则**:Python 的语法简洁明了,使用缩进来表示代码块。语句通常以换行符结束。 2...

    Python学习笔记都(是干货).zip

    这些只是Python编程中的一部分关键概念,"Python学习笔记都(是干货).pdf"很可能会深入讨论这些主题,并可能包含实战练习和示例代码,帮助读者巩固理解并提升技能。对于想要深入学习Python的人来说,这份笔记将是一...

    Python - N 天从新手到大师‍ 学习笔记.zip

    这份"Python - N 天从新手到大师学习笔记"的压缩包文件包含了全面的学习资源,帮助你在短时间内掌握Python编程的核心概念和技术。以下是对其中可能包含的知识点的详细解读: 1. **Python基础知识**:学习Python首先...

    python核心笔记-51页

    第七章“映射和集合类型”介绍了字典和集合这两种数据结构,它们在存储和处理关联数据或唯一元素时非常有用。第八章“条件和循环”详细阐述了if语句、else分支、elif条件以及for和while循环,这些都是控制程序流程的...

    我学习Python过程中的一些笔记和Demo.zip

    在Python学习之旅中,积累知识和实践是提升技能的关键步骤。"我学习Python过程中的一些笔记和Demo.zip"这个压缩包文件很可能包含了作者在探索Python编程时的个人笔记、代码示例以及可能的项目实践,这些都是宝贵的...

    Python详细笔记.pdf

    字典是Python中的映射类型,它存储键值对,并允许通过键快速检索值。 #### 集合 集合是一个无序且不重复的元素集。可以进行并集、交集、差集等集合操作。 ### 第3章 控制语句 #### PyCharm开发环境的使用 PyCharm...

Global site tag (gtag.js) - Google Analytics